{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Animation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pythreejs import *\n",
    "import ipywidgets\n",
    "from IPython.display import display"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Reduce repo churn for examples with embedded state:\n",
    "from pythreejs._example_helper import use_example_model_ids\n",
    "use_example_model_ids()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "view_width = 600\n",
    "view_height = 400"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's first set up a basic scene with a cube and a sphere,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "sphere = Mesh(\n",
    "    SphereBufferGeometry(1, 32, 16),\n",
    "    MeshStandardMaterial(color='red')\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "cube = Mesh(\n",
    "    BoxBufferGeometry(1, 1, 1),\n",
    "    MeshPhysicalMaterial(color='green'),\n",
    "    position=[2, 0, 4]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "as well as lighting and camera:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "camera = PerspectiveCamera( position=[10, 6, 10], aspect=view_width/view_height)\n",
    "key_light = DirectionalLight(position=[0, 10, 10])\n",
    "ambient_light = AmbientLight()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Keyframe animation\n",
    "\n",
    "The three.js animation system is built as a [keyframe](https://en.wikipedia.org/wiki/Key_frame) system. We'll demonstrate this by animating the position and rotation of our camera."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we set up the keyframes for the position and the rotation separately:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "positon_track = VectorKeyframeTrack(name='.position',\n",
    "    times=[0, 2, 5],\n",
    "    values=[10, 6, 10,\n",
    "            6.3, 3.78, 6.3,\n",
    "            -2.98, 0.84, 9.2,\n",
    "           ])\n",
    "rotation_track = QuaternionKeyframeTrack(name='.quaternion',\n",
    "    times=[0, 2, 5],\n",
    "    values=[-0.184, 0.375, 0.0762, 0.905,\n",
    "            -0.184, 0.375, 0.0762, 0.905,\n",
    "            -0.0430, -0.156, -0.00681, 0.987,\n",
    "           ])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, we create an animation clip combining the two tracks, and finally an animation action to control the animation. See the three.js docs for more details on the different responsibilities of the different classes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "camera_clip = AnimationClip(tracks=[positon_track, rotation_track])\n",
    "camera_action = AnimationAction(AnimationMixer(camera), camera_clip, camera)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, let's see it in action:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "scene = Scene(children=[sphere, cube, camera, key_light, ambient_light])\n",
    "controller = OrbitControls(controlling=camera)\n",
    "renderer = Renderer(camera=camera, scene=scene, controls=[controller],\n",
    "                    width=view_width, height=view_height)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "tags": [
     "nbval-ignore-output"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_021",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Renderer(camera=PerspectiveCamera(aspect=1.5, position=(10.0, 6.0, 10.0), projectionMatrix=(1.4296712803397058…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "renderer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "tags": [
     "nbval-ignore-output"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_017",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "AnimationAction(clip=AnimationClip(duration=5.0, tracks=(VectorKeyframeTrack(name='.position', times=array([0,…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "camera_action"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's add another animation clip, this time animating the color of the sphere's material:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "color_track = ColorKeyframeTrack(name='.material.color',\n",
    "    times=[0, 1], values=[1, 0, 0,  0, 0, 1])  # red to blue\n",
    "\n",
    "color_clip = AnimationClip(tracks=[color_track], duration=1.5)\n",
    "color_action = AnimationAction(AnimationMixer(sphere), color_clip, sphere)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_027",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "AnimationAction(clip=AnimationClip(duration=1.5, tracks=(ColorKeyframeTrack(name='.material.color', times=arra…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "color_action"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note how the two animation clips can freely be combined since they affect different properties. It's also worth noting that the color animation can be combined with manual camera control, while the camera animation cannot. When animating the camera, you might want to consider disabling the manual controls."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Animating rotation\n",
    "\n",
    "When animating the camera rotation above, we used the camera's `quaternion`. This is the most robust method for animating free-form rotations. For example, the animation above was created by first moving the camera manually, and then reading out its `position` and `quaternion` properties at the wanted views. If you want more intuitive axes control, it is possible to animate the `rotation` sub-attributes instead, as shown below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_040",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Renderer(camera=PerspectiveCamera(aspect=1.5, position=(10.0, 6.0, 10.0), quaternion=(0.0, 0.0, 0.0, 1.0), sca…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "f = \"\"\"\n",
    "function f(origu, origv, out) {\n",
    "    // scale u and v to the ranges I want: [0, 2*pi]\n",
    "    var u = 2*Math.PI*origu;\n",
    "    var v = 2*Math.PI*origv;\n",
    "    \n",
    "    var x = Math.sin(u);\n",
    "    var y = Math.cos(v);\n",
    "    var z = Math.cos(u+v);\n",
    "    \n",
    "    out.set(x,y,z)\n",
    "}\n",
    "\"\"\"\n",
    "surf_g = ParametricGeometry(func=f, slices=16, stacks=16);\n",
    "\n",
    "surf1 = Mesh(geometry=surf_g,\n",
    "             material=MeshLambertMaterial(color='green', side='FrontSide'))\n",
    "surf2 = Mesh(geometry=surf_g,\n",
    "             material=MeshLambertMaterial(color='yellow', side='BackSide'))\n",
    "surf = Group(children=[surf1, surf2])\n",
    "\n",
    "camera2 = PerspectiveCamera( position=[10, 6, 10], aspect=view_width/view_height)\n",
    "scene2 = Scene(children=[surf, camera2,\n",
    "                         DirectionalLight(position=[3, 5, 1], intensity=0.6),\n",
    "                         AmbientLight(intensity=0.5)])\n",
    "renderer2 = Renderer(camera=camera2, scene=scene2,\n",
    "                     controls=[OrbitControls(controlling=camera2)],\n",
    "                     width=view_width, height=view_height)\n",
    "display(renderer2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_049",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "AnimationAction(clip=AnimationClip(tracks=(NumberKeyframeTrack(name='.rotation[y]', times=array([0, 2]), value…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "spin_track = NumberKeyframeTrack(name='.rotation[y]', times=[0, 2], values=[0, 6.28])\n",
    "spin_clip = AnimationClip(tracks=[spin_track])\n",
    "spin_action = AnimationAction(AnimationMixer(surf), spin_clip, surf)\n",
    "spin_action"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that we are spinning the object itself, and that we are therefore free to manipulate the camera at will."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Morph targets\n",
    "\n",
    "Set up a simple sphere geometry, and add a morph target that is an oblong pill shape:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This lets three.js create the geometry, then syncs back vertex positions etc.\n",
    "# For this reason, you should allow for the sync to complete before executing\n",
    "# the next cell.\n",
    "morph = BufferGeometry.from_geometry(SphereBufferGeometry(1, 32, 16))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "# Set up morph targets:\n",
    "vertices = np.array(morph.attributes['position'].array)\n",
    "for i in range(len(vertices)):\n",
    "    if vertices[i, 0] > 0:\n",
    "        vertices[i, 0] += 1\n",
    "morph.morphAttributes = {'position': [\n",
    "    BufferAttribute(vertices),\n",
    "]}\n",
    "\n",
    "morphMesh = Mesh(morph, MeshPhongMaterial(\n",
    "    color='#ff3333', shininess=150, morphTargets=True))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set up animation for going back and forth between the sphere and pill shape:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [],
   "source": [
    "pill_track = NumberKeyframeTrack(\n",
    "    name='.morphTargetInfluences[0]', times=[0, 1.5, 3], values=[0, 2.5, 0])\n",
    "pill_clip = AnimationClip(tracks=[pill_track])\n",
    "pill_action = AnimationAction(AnimationMixer(morphMesh), pill_clip, morphMesh)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_070",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Renderer(camera=PerspectiveCamera(aspect=1.5, position=(5.0, 3.0, 5.0), quaternion=(0.0, 0.0, 0.0, 1.0), scale…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_063",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "AnimationAction(clip=AnimationClip(duration=3.0, tracks=(NumberKeyframeTrack(name='.morphTargetInfluences[0]',…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "camera3 = PerspectiveCamera( position=[5, 3, 5], aspect=view_width/view_height)\n",
    "scene3 = Scene(children=[morphMesh, camera3,\n",
    "                         DirectionalLight(position=[3, 5, 1], intensity=0.6),\n",
    "                         AmbientLight(intensity=0.5)])\n",
    "renderer3 = Renderer(camera=camera3, scene=scene3,\n",
    "                     controls=[OrbitControls(controlling=camera3)],\n",
    "                     width=view_width, height=view_height)\n",
    "display(renderer3, pill_action)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Skeletal animation\n",
    "\n",
    "First, set up a skinned mesh with some bones:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "N_BONES = 3\n",
    "\n",
    "ref_cylinder = CylinderBufferGeometry(5, 5, 50, 5, N_BONES * 5, True)\n",
    "cylinder = BufferGeometry.from_geometry(ref_cylinder)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [],
   "source": [
    "skinIndices = []\n",
    "skinWeights = []\n",
    "vertices = cylinder.attributes['position'].array\n",
    "boneHeight = ref_cylinder.height / (N_BONES - 1)\n",
    "for i in range(vertices.shape[0]):\n",
    "\n",
    "    y = vertices[i, 1] + 0.5 * ref_cylinder.height\n",
    "\n",
    "    skinIndex = y // boneHeight\n",
    "    skinWeight = ( y % boneHeight ) / boneHeight\n",
    "\n",
    "    # Ease between each bone\n",
    "    skinIndices.append([skinIndex, skinIndex + 1, 0, 0 ])\n",
    "    skinWeights.append([1 - skinWeight, skinWeight, 0, 0 ])\n",
    "\n",
    "cylinder.attributes = dict(\n",
    "    cylinder.attributes,\n",
    "    skinIndex=BufferAttribute(skinIndices),\n",
    "    skinWeight=BufferAttribute(skinWeights),\n",
    ")\n",
    "\n",
    "shoulder = Bone(position=(0, -25, 0))\n",
    "elbow = Bone(position=(0, 25, 0))\n",
    "hand = Bone(position=(0, 25, 0))\n",
    "\n",
    "shoulder.add(elbow)\n",
    "elbow.add(hand)\n",
    "bones = [shoulder, elbow, hand]\n",
    "skeleton = Skeleton(bones)\n",
    "\n",
    "mesh = SkinnedMesh(cylinder, MeshPhongMaterial(side='DoubleSide', skinning=True))\n",
    "mesh.add(bones[0])\n",
    "mesh.skeleton = skeleton"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [],
   "source": [
    "helper = SkeletonHelper(mesh)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, set up some simple rotation animations for the bones:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [],
   "source": [
    "# Rotate on x and z axes:\n",
    "bend_tracks = [\n",
    "    NumberKeyframeTrack(\n",
    "        name='.bones[1].rotation[x]',\n",
    "        times=[0, 0.5, 1.5, 2],\n",
    "        values=[0, 0.3, -0.3, 0]),\n",
    "    NumberKeyframeTrack(\n",
    "        name='.bones[1].rotation[z]',\n",
    "        times=[0, 0.5, 1.5, 2],\n",
    "        values=[0, 0.3, -0.3, 0]),\n",
    "    NumberKeyframeTrack(\n",
    "        name='.bones[2].rotation[x]',\n",
    "        times=[0, 0.5, 1.5, 2],\n",
    "        values=[0, -0.3, 0.3, 0]),\n",
    "    NumberKeyframeTrack(\n",
    "        name='.bones[2].rotation[z]',\n",
    "        times=[0, 0.5, 1.5, 2],\n",
    "        values=[0, -0.3, 0.3, 0]),\n",
    "]\n",
    "bend_clip = AnimationClip(tracks=bend_tracks)\n",
    "bend_action = AnimationAction(AnimationMixer(mesh), bend_clip, mesh)\n",
    "    \n",
    "# Rotate on y axis:\n",
    "wring_tracks = [\n",
    "    NumberKeyframeTrack(name='.bones[1].rotation[y]', times=[0, 0.5, 1.5, 2], values=[0, 0.7, -0.7, 0]),\n",
    "    NumberKeyframeTrack(name='.bones[2].rotation[y]', times=[0, 0.5, 1.5, 2], values=[0, 0.7, -0.7, 0]),\n",
    "]\n",
    "\n",
    "wring_clip = AnimationClip(tracks=wring_tracks)\n",
    "wring_action = AnimationAction(AnimationMixer(mesh), wring_clip, mesh)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_110",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Renderer(camera=PerspectiveCamera(aspect=1.5, position=(40.0, 24.0, 40.0), quaternion=(0.0, 0.0, 0.0, 1.0), sc…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "camera4 = PerspectiveCamera( position=[40, 24, 40], aspect=view_width/view_height)\n",
    "scene4 = Scene(children=[mesh, helper, camera4,\n",
    "                         DirectionalLight(position=[3, 5, 1], intensity=0.6),\n",
    "                         AmbientLight(intensity=0.5)])\n",
    "renderer4 = Renderer(camera=camera4, scene=scene4,\n",
    "                     controls=[OrbitControls(controlling=camera4)],\n",
    "                     width=view_width, height=view_height)\n",
    "display(renderer4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_097",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "AnimationAction(clip=AnimationClip(duration=2.0, tracks=(NumberKeyframeTrack(name='.bones[1].rotation[x]', tim…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bend_action"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "tags": [
     "nbval-skip"
    ]
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "pythree_example_model_103",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "AnimationAction(clip=AnimationClip(duration=2.0, tracks=(NumberKeyframeTrack(name='.bones[1].rotation[y]', tim…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "wring_action"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "0d3ce496-43e1-4721-b040-8e4a50f531b2": {
      "buffers": [
       {
        "data": "AAAAAAAAgD/NzEw+AACAP83MzD4AAIA/mpkZPwAAgD/NzEw/AACAPwAAgD8AAIA/AAAAAO/ubj/NzEw+7+5uP83MzD7v7m4/mpkZP+/ubj/NzEw/7+5uPwAAgD/v7m4/AAAAAN7dXT/NzEw+3t1dP83MzD7e3V0/mpkZP97dXT/NzEw/3t1dPwAAgD/e3V0/AAAAAM3MTD/NzEw+zcxMP83MzD7NzEw/mpkZP83MTD/NzEw/zcxMPwAAgD/NzEw/AAAAALy7Oz/NzEw+vLs7P83MzD68uzs/mpkZP7y7Oz/NzEw/vLs7PwAAgD+8uzs/AAAAAKuqKj/NzEw+q6oqP83MzD6rqio/mpkZP6uqKj/NzEw/q6oqPwAAgD+rqio/AAAAAJqZGT/NzEw+mpkZP83MzD6amRk/mpkZP5qZGT/NzEw/mpkZPwAAgD+amRk/AAAAAImICD/NzEw+iYgIP83MzD6JiAg/mpkZP4mICD/NzEw/iYgIPwAAgD+JiAg/AAAAAO/u7j7NzEw+7+7uPs3MzD7v7u4+mpkZP+/u7j7NzEw/7+7uPgAAgD/v7u4+AAAAAM3MzD7NzEw+zczMPs3MzD7NzMw+mpkZP83MzD7NzEw/zczMPgAAgD/NzMw+AAAAAKuqqj7NzEw+q6qqPs3MzD6rqqo+mpkZP6uqqj7NzEw/q6qqPgAAgD+rqqo+AAAAAImIiD7NzEw+iYiIPs3MzD6JiIg+mpkZP4mIiD7NzEw/iYiIPgAAgD+JiIg+AAAAAM3MTD7NzEw+zcxMPs3MzD7NzEw+mpkZP83MTD7NzEw/zcxMPgAAgD/NzEw+AAAAAImICD7NzEw+iYgIPs3MzD6JiAg+mpkZP4mICD7NzEw/iYgIPgAAgD+JiAg+AAAAAImIiD3NzEw+iYiIPc3MzD6JiIg9mpkZP4mIiD3NzEw/iYiIPQAAgD+JiIg9AAAAAAAAAADNzEw+AAAAAM3MzD4AAAAAmpkZPwAAAADNzEw/AAAAAAAAgD8AAAAA",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "float32",
        "shape": [
         96,
         2
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "11242342-d8f9-46a0-9b69-96ad891e4e00": {
      "buffers": [
       {
        "data": "AAAAAAAAgD8AAAA9AACAPwAAgD0AAIA/AADAPQAAgD8AAAA+AACAPwAAID4AAIA/AABAPgAAgD8AAGA+AACAPwAAgD4AAIA/AACQPgAAgD8AAKA+AACAPwAAsD4AAIA/AADAPgAAgD8AANA+AACAPwAA4D4AAIA/AADwPgAAgD8AAAA/AACAPwAACD8AAIA/AAAQPwAAgD8AABg/AACAPwAAID8AAIA/AAAoPwAAgD8AADA/AACAPwAAOD8AAIA/AABAPwAAgD8AAEg/AACAPwAAUD8AAIA/AABYPwAAgD8AAGA/AACAPwAAaD8AAIA/AABwPwAAgD8AAHg/AACAPwAAgD8AAIA/AAAAAAAAcD8AAAA9AABwPwAAgD0AAHA/AADAPQAAcD8AAAA+AABwPwAAID4AAHA/AABAPgAAcD8AAGA+AABwPwAAgD4AAHA/AACQPgAAcD8AAKA+AABwPwAAsD4AAHA/AADAPgAAcD8AANA+AABwPwAA4D4AAHA/AADwPgAAcD8AAAA/AABwPwAACD8AAHA/AAAQPwAAcD8AABg/AABwPwAAID8AAHA/AAAoPwAAcD8AADA/AABwPwAAOD8AAHA/AABAPwAAcD8AAEg/AABwPwAAUD8AAHA/AABYPwAAcD8AAGA/AABwPwAAaD8AAHA/AABwPwAAcD8AAHg/AABwPwAAgD8AAHA/AAAAAAAAYD8AAAA9AABgPwAAgD0AAGA/AADAPQAAYD8AAAA+AABgPwAAID4AAGA/AABAPgAAYD8AAGA+AABgPwAAgD4AAGA/AACQPgAAYD8AAKA+AABgPwAAsD4AAGA/AADAPgAAYD8AANA+AABgPwAA4D4AAGA/AADwPgAAYD8AAAA/AABgPwAACD8AAGA/AAAQPwAAYD8AABg/AABgPwAAID8AAGA/AAAoPwAAYD8AADA/AABgPwAAOD8AAGA/AABAPwAAYD8AAEg/AABgPwAAUD8AAGA/AABYPwAAYD8AAGA/AABgPwAAaD8AAGA/AABwPwAAYD8AAHg/AABgPwAAgD8AAGA/AAAAAAAAUD8AAAA9AABQPwAAgD0AAFA/AADAPQAAUD8AAAA+AABQPwAAID4AAFA/AABAPgAAUD8AAGA+AABQPwAAgD4AAFA/AACQPgAAUD8AAKA+AABQPwAAsD4AAFA/AADAPgAAUD8AANA+AABQPwAA4D4AAFA/AADwPgAAUD8AAAA/AABQPwAACD8AAFA/AAAQPwAAUD8AABg/AABQPwAAID8AAFA/AAAoPwAAUD8AADA/AABQPwAAOD8AAFA/AABAPwAAUD8AAEg/AABQPwAAUD8AAFA/AABYPwAAUD8AAGA/AABQPwAAaD8AAFA/AABwPwAAUD8AAHg/AABQPwAAgD8AAFA/AAAAAAAAQD8AAAA9AABAPwAAgD0AAEA/AADAPQAAQD8AAAA+AABAPwAAID4AAEA/AABAPgAAQD8AAGA+AABAPwAAgD4AAEA/AACQPgAAQD8AAKA+AABAPwAAsD4AAEA/AADAPgAAQD8AANA+AABAPwAA4D4AAEA/AADwPgAAQD8AAAA/AABAPwAACD8AAEA/AAAQPwAAQD8AABg/AABAPwAAID8AAEA/AAAoPwAAQD8AADA/AABAPwAAOD8AAEA/AABAPwAAQD8AAEg/AABAPwAAUD8AAEA/AABYPwAAQD8AAGA/AABAPwAAaD8AAEA/AABwPwAAQD8AAHg/AABAPwAAgD8AAEA/AAAAAAAAMD8AAAA9AAAwPwAAgD0AADA/AADAPQAAMD8AAAA+AAAwPwAAID4AADA/AABAPgAAMD8AAGA+AAAwPwAAgD4AADA/AACQPgAAMD8AAKA+AAAwPwAAsD4AADA/AADAPgAAMD8AANA+AAAwPwAA4D4AADA/AADwPgAAMD8AAAA/AAAwPwAACD8AADA/AAAQPwAAMD8AABg/AAAwPwAAID8AADA/AAAoPwAAMD8AADA/AAAwPwAAOD8AADA/AABAPwAAMD8AAEg/AAAwPwAAUD8AADA/AABYPwAAMD8AAGA/AAAwPwAAaD8AADA/AABwPwAAMD8AAHg/AAAwPwAAgD8AADA/AAAAAAAAID8AAAA9AAAgPwAAgD0AACA/AADAPQAAID8AAAA+AAAgPwAAID4AACA/AABAPgAAID8AAGA+AAAgPwAAgD4AACA/AACQPgAAID8AAKA+AAAgPwAAsD4AACA/AADAPgAAID8AANA+AAAgPwAA4D4AACA/AADwPgAAID8AAAA/AAAgPwAACD8AACA/AAAQPwAAID8AABg/AAAgPwAAID8AACA/AAAoPwAAID8AADA/AAAgPwAAOD8AACA/AABAPwAAID8AAEg/AAAgPwAAUD8AACA/AABYPwAAID8AAGA/AAAgPwAAaD8AACA/AABwPwAAID8AAHg/AAAgPwAAgD8AACA/AAAAAAAAED8AAAA9AAAQPwAAgD0AABA/AADAPQAAED8AAAA+AAAQPwAAID4AABA/AABAPgAAED8AAGA+AAAQPwAAgD4AABA/AACQPgAAED8AAKA+AAAQPwAAsD4AABA/AADAPgAAED8AANA+AAAQPwAA4D4AABA/AADwPgAAED8AAAA/AAAQPwAACD8AABA/AAAQPwAAED8AABg/AAAQPwAAID8AABA/AAAoPwAAED8AADA/AAAQPwAAOD8AABA/AABAPwAAED8AAEg/AAAQPwAAUD8AABA/AABYPwAAED8AAGA/AAAQPwAAaD8AABA/AABwPwAAED8AAHg/AAAQPwAAgD8AABA/AAAAAAAAAD8AAAA9AAAAPwAAgD0AAAA/AADAPQAAAD8AAAA+AAAAPwAAID4AAAA/AABAPgAAAD8AAGA+AAAAPwAAgD4AAAA/AACQPgAAAD8AAKA+AAAAPwAAsD4AAAA/AADAPgAAAD8AANA+AAAAPwAA4D4AAAA/AADwPgAAAD8AAAA/AAAAPwAACD8AAAA/AAAQPwAAAD8AABg/AAAAPwAAID8AAAA/AAAoPwAAAD8AADA/AAAAPwAAOD8AAAA/AABAPwAAAD8AAEg/AAAAPwAAUD8AAAA/AABYPwAAAD8AAGA/AAAAPwAAaD8AAAA/AABwPwAAAD8AAHg/AAAAPwAAgD8AAAA/AAAAAAAA4D4AAAA9AADgPgAAgD0AAOA+AADAPQAA4D4AAAA+AADgPgAAID4AAOA+AABAPgAA4D4AAGA+AADgPgAAgD4AAOA+AACQPgAA4D4AAKA+AADgPgAAsD4AAOA+AADAPgAA4D4AANA+AADgPgAA4D4AAOA+AADwPgAA4D4AAAA/AADgPgAACD8AAOA+AAAQPwAA4D4AABg/AADgPgAAID8AAOA+AAAoPwAA4D4AADA/AADgPgAAOD8AAOA+AABAPwAA4D4AAEg/AADgPgAAUD8AAOA+AABYPwAA4D4AAGA/AADgPgAAaD8AAOA+AABwPwAA4D4AAHg/AADgPgAAgD8AAOA+AAAAAAAAwD4AAAA9AADAPgAAgD0AAMA+AADAPQAAwD4AAAA+AADAPgAAID4AAMA+AABAPgAAwD4AAGA+AADAPgAAgD4AAMA+AACQPgAAwD4AAKA+AADAPgAAsD4AAMA+AADAPgAAwD4AANA+AADAPgAA4D4AAMA+AADwPgAAwD4AAAA/AADAPgAACD8AAMA+AAAQPwAAwD4AABg/AADAPgAAID8AAMA+AAAoPwAAwD4AADA/AADAPgAAOD8AAMA+AABAPwAAwD4AAEg/AADAPgAAUD8AAMA+AABYPwAAwD4AAGA/AADAPgAAaD8AAMA+AABwPwAAwD4AAHg/AADAPgAAgD8AAMA+AAAAAAAAoD4AAAA9AACgPgAAgD0AAKA+AADAPQAAoD4AAAA+AACgPgAAID4AAKA+AABAPgAAoD4AAGA+AACgPgAAgD4AAKA+AACQPgAAoD4AAKA+AACgPgAAsD4AAKA+AADAPgAAoD4AANA+AACgPgAA4D4AAKA+AADwPgAAoD4AAAA/AACgPgAACD8AAKA+AAAQPwAAoD4AABg/AACgPgAAID8AAKA+AAAoPwAAoD4AADA/AACgPgAAOD8AAKA+AABAPwAAoD4AAEg/AACgPgAAUD8AAKA+AABYPwAAoD4AAGA/AACgPgAAaD8AAKA+AABwPwAAoD4AAHg/AACgPgAAgD8AAKA+AAAAAAAAgD4AAAA9AACAPgAAgD0AAIA+AADAPQAAgD4AAAA+AACAPgAAID4AAIA+AABAPgAAgD4AAGA+AACAPgAAgD4AAIA+AACQPgAAgD4AAKA+AACAPgAAsD4AAIA+AADAPgAAgD4AANA+AACAPgAA4D4AAIA+AADwPgAAgD4AAAA/AACAPgAACD8AAIA+AAAQPwAAgD4AABg/AACAPgAAID8AAIA+AAAoPwAAgD4AADA/AACAPgAAOD8AAIA+AABAPwAAgD4AAEg/AACAPgAAUD8AAIA+AABYPwAAgD4AAGA/AACAPgAAaD8AAIA+AABwPwAAgD4AAHg/AACAPgAAgD8AAIA+AAAAAAAAQD4AAAA9AABAPgAAgD0AAEA+AADAPQAAQD4AAAA+AABAPgAAID4AAEA+AABAPgAAQD4AAGA+AABAPgAAgD4AAEA+AACQPgAAQD4AAKA+AABAPgAAsD4AAEA+AADAPgAAQD4AANA+AABAPgAA4D4AAEA+AADwPgAAQD4AAAA/AABAPgAACD8AAEA+AAAQPwAAQD4AABg/AABAPgAAID8AAEA+AAAoPwAAQD4AADA/AABAPgAAOD8AAEA+AABAPwAAQD4AAEg/AABAPgAAUD8AAEA+AABYPwAAQD4AAGA/AABAPgAAaD8AAEA+AABwPwAAQD4AAHg/AABAPgAAgD8AAEA+AAAAAAAAAD4AAAA9AAAAPgAAgD0AAAA+AADAPQAAAD4AAAA+AAAAPgAAID4AAAA+AABAPgAAAD4AAGA+AAAAPgAAgD4AAAA+AACQPgAAAD4AAKA+AAAAPgAAsD4AAAA+AADAPgAAAD4AANA+AAAAPgAA4D4AAAA+AADwPgAAAD4AAAA/AAAAPgAACD8AAAA+AAAQPwAAAD4AABg/AAAAPgAAID8AAAA+AAAoPwAAAD4AADA/AAAAPgAAOD8AAAA+AABAPwAAAD4AAEg/AAAAPgAAUD8AAAA+AABYPwAAAD4AAGA/AAAAPgAAaD8AAAA+AABwPwAAAD4AAHg/AAAAPgAAgD8AAAA+AAAAAAAAgD0AAAA9AACAPQAAgD0AAIA9AADAPQAAgD0AAAA+AACAPQAAID4AAIA9AABAPgAAgD0AAGA+AACAPQAAgD4AAIA9AACQPgAAgD0AAKA+AACAPQAAsD4AAIA9AADAPgAAgD0AANA+AACAPQAA4D4AAIA9AADwPgAAgD0AAAA/AACAPQAACD8AAIA9AAAQPwAAgD0AABg/AACAPQAAID8AAIA9AAAoPwAAgD0AADA/AACAPQAAOD8AAIA9AABAPwAAgD0AAEg/AACAPQAAUD8AAIA9AABYPwAAgD0AAGA/AACAPQAAaD8AAIA9AABwPwAAgD0AAHg/AACAPQAAgD8AAIA9AAAAAAAAAAAAAAA9AAAAAAAAgD0AAAAAAADAPQAAAAAAAAA+AAAAAAAAID4AAAAAAABAPgAAAAAAAGA+AAAAAAAAgD4AAAAAAACQPgAAAAAAAKA+AAAAAAAAsD4AAAAAAADAPgAAAAAAANA+AAAAAAAA4D4AAAAAAADwPgAAAAAAAAA/AAAAAAAACD8AAAAAAAAQPwAAAAAAABg/AAAAAAAAID8AAAAAAAAoPwAAAAAAADA/AAAAAAAAOD8AAAAAAABAPwAAAAAAAEg/AAAAAAAAUD8AAAAAAABYPwAAAAAAAGA/AAAAAAAAaD8AAAAAAABwPwAAAAAAAHg/AAAAAAAAgD8AAAAA",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "float32",
        "shape": [
         561,
         2
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "142291ce-ad0c-49be-8258-3c7123d1d633": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "DirectionalLightShadowModel",
      "state": {
       "camera": "IPY_MODEL_a974aa85-db6d-43ad-9d34-e2f0b4d17e1c"
      }
     },
     "175da34b-a1b9-43f4-b4bd-dd778dd33c8b": {
      "buffers": [
       {
        "data": "AAAAAAAAyEEAAKBARiuYQAAAyEFYxcU/Xhc8QAAAyEFWcYHAXhc8wAAAyEFWcYHARiuYwAAAyEFYxcU/fn2wpgAAyEEAAKBAAAAAAFVVrUEAAKBARiuYQFVVrUFYxcU/Xhc8QFVVrUFWcYHAXhc8wFVVrUFWcYHARiuYwFVVrUFYxcU/fn2wplVVrUEAAKBAAAAAAKuqkkEAAKBARiuYQKuqkkFYxcU/Xhc8QKuqkkFWcYHAXhc8wKuqkkFWcYHARiuYwKuqkkFYxcU/fn2wpquqkkEAAKBAAAAAAAAAcEEAAKBARiuYQAAAcEFYxcU/Xhc8QAAAcEFWcYHAXhc8wAAAcEFWcYHARiuYwAAAcEFYxcU/fn2wpgAAcEEAAKBAAAAAAKuqOkEAAKBARiuYQKuqOkFYxcU/Xhc8QKuqOkFWcYHAXhc8wKuqOkFWcYHARiuYwKuqOkFYxcU/fn2wpquqOkEAAKBAAAAAAFVVBUEAAKBARiuYQFVVBUFYxcU/Xhc8QFVVBUFWcYHAXhc8wFVVBUFWcYHARiuYwFVVBUFYxcU/fn2wplVVBUEAAKBAAAAAAAAAoEAAAKBARiuYQAAAoEBYxcU/Xhc8QAAAoEBWcYHAXhc8wAAAoEBWcYHARiuYwAAAoEBYxcU/fn2wpgAAoEAAAKBAAAAAAFVV1T8AAKBARiuYQFVV1T9YxcU/Xhc8QFVV1T9WcYHAXhc8wFVV1T9WcYHARiuYwFVV1T9YxcU/fn2wplVV1T8AAKBAAAAAAFVV1b8AAKBARiuYQFVV1b9YxcU/Xhc8QFVV1b9WcYHAXhc8wFVV1b9WcYHARiuYwFVV1b9YxcU/fn2wplVV1b8AAKBAAAAAAAAAoMAAAKBARiuYQAAAoMBYxcU/Xhc8QAAAoMBWcYHAXhc8wAAAoMBWcYHARiuYwAAAoMBYxcU/fn2wpgAAoMAAAKBAAAAAAFVVBcEAAKBARiuYQFVVBcFYxcU/Xhc8QFVVBcFWcYHAXhc8wFVVBcFWcYHARiuYwFVVBcFYxcU/fn2wplVVBcEAAKBAAAAAAKuqOsEAAKBARiuYQKuqOsFYxcU/Xhc8QKuqOsFWcYHAXhc8wKuqOsFWcYHARiuYwKuqOsFYxcU/fn2wpquqOsEAAKBAAAAAAAAAcMEAAKBARiuYQAAAcMFYxcU/Xhc8QAAAcMFWcYHAXhc8wAAAcMFWcYHARiuYwAAAcMFYxcU/fn2wpgAAcMEAAKBAAAAAAKuqksEAAKBARiuYQKuqksFYxcU/Xhc8QKuqksFWcYHAXhc8wKuqksFWcYHARiuYwKuqksFYxcU/fn2wpquqksEAAKBAAAAAAFVVrcEAAKBARiuYQFVVrcFYxcU/Xhc8QFVVrcFWcYHAXhc8wFVVrcFWcYHARiuYwFVVrcFYxcU/fn2wplVVrcEAAKBAAAAAAAAAyMEAAKBARiuYQAAAyMFYxcU/Xhc8QAAAyMFWcYHAXhc8wAAAyMFWcYHARiuYwAAAyMFYxcU/fn2wpgAAyMEAAKBA",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "float32",
        "shape": [
         96,
         3
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "2bd38c3d-390b-4c4e-993f-dc4160143cd7": {
      "buffers": [
       {
        "data": "AAAhACIAAQAiACMAAgAjACQAAwAkACUABAAlACYABQAmACcABgAnACgABwAoACkACAApACoACQAqACsACgArACwACwAsAC0ADAAtAC4ADQAuAC8ADgAvADAADwAwADEAEAAxADIAEQAyADMAEgAzADQAEwA0ADUAFAA1ADYAFQA2ADcAFgA3ADgAFwA4ADkAGAA5ADoAGQA6ADsAGgA7ADwAGwA8AD0AHAA9AD4AHQA+AD8AHgA/AEAAHwBAAEEAIgAhAEMAIQBCAEMAIwAiAEQAIgBDAEQAJAAjAEUAIwBEAEUAJQAkAEYAJABFAEYAJgAlAEcAJQBGAEcAJwAmAEgAJgBHAEgAKAAnAEkAJwBIAEkAKQAoAEoAKABJAEoAKgApAEsAKQBKAEsAKwAqAEwAKgBLAEwALAArAE0AKwBMAE0ALQAsAE4ALABNAE4ALgAtAE8ALQBOAE8ALwAuAFAALgBPAFAAMAAvAFEALwBQAFEAMQAwAFIAMABRAFIAMgAxAFMAMQBSAFMAMwAyAFQAMgBTAFQANAAzAFUAMwBUAFUANQA0AFYANABVAFYANgA1AFcANQBWAFcANwA2AFgANgBXAFgAOAA3AFkANwBYAFkAOQA4AFoAOABZAFoAOgA5AFsAOQBaAFsAOwA6AFwAOgBbAFwAPAA7AF0AOwBcAF0APQA8AF4APABdAF4APgA9AF8APQBeAF8APwA+AGAAPgBfAGAAQAA/AGEAPwBgAGEAQQBAAGIAQABhAGIAQwBCAGQAQgBjAGQARABDAGUAQwBkAGUARQBEAGYARABlAGYARgBFAGcARQBmAGcARwBGAGgARgBnAGgASABHAGkARwBoAGkASQBIAGoASABpAGoASgBJAGsASQBqAGsASwBKAGwASgBrAGwATABLAG0ASwBsAG0ATQBMAG4ATABtAG4ATgBNAG8ATQBuAG8ATwBOAHAATgBvAHAAUABPAHEATwBwAHEAUQBQAHIAUABxAHIAUgBRAHMAUQByAHMAUwBSAHQAUgBzAHQAVABTAHUAUwB0AHUAVQBUAHYAVAB1AHYAVgBVAHcAVQB2AHcAVwBWAHgAVgB3AHgAWABXAHkAVwB4AHkAWQBYAHoAWAB5AHoAWgBZAHsAWQB6AHsAWwBaAHwAWgB7AHwAXABbAH0AWwB8AH0AXQBcAH4AXAB9AH4AXgBdAH8AXQB+AH8AXwBeAIAAXgB/AIAAYABfAIEAXwCAAIEAYQBgAIIAYACBAIIAYgBhAIMAYQCCAIMAZABjAIUAYwCEAIUAZQBkAIYAZACFAIYAZgBlAIcAZQCGAIcAZwBmAIgAZgCHAIgAaABnAIkAZwCIAIkAaQBoAIoAaACJAIoAagBpAIsAaQCKAIsAawBqAIwAagCLAIwAbABrAI0AawCMAI0AbQBsAI4AbACNAI4AbgBtAI8AbQCOAI8AbwBuAJAAbgCPAJAAcABvAJEAbwCQAJEAcQBwAJIAcACRAJIAcgBxAJMAcQCSAJMAcwByAJQAcgCTAJQAdABzAJUAcwCUAJUAdQB0AJYAdACVAJYAdgB1AJcAdQCWAJcAdwB2AJgAdgCXAJgAeAB3AJkAdwCYAJkAeQB4AJoAeACZAJoAegB5AJsAeQCaAJsAewB6AJwAegCbAJwAfAB7AJ0AewCcAJ0AfQB8AJ4AfACdAJ4AfgB9AJ8AfQCeAJ8AfwB+AKAAfgCfAKAAgAB/AKEAfwCgAKEAgQCAAKIAgAChAKIAggCBAKMAgQCiAKMAgwCCAKQAggCjAKQAhQCEAKYAhAClAKYAhgCFAKcAhQCmAKcAhwCGAKgAhgCnAKgAiACHAKkAhwCoAKkAiQCIAKoAiACpAKoAigCJAKsAiQCqAKsAiwCKAKwAigCrAKwAjACLAK0AiwCsAK0AjQCMAK4AjACtAK4AjgCNAK8AjQCuAK8AjwCOALAAjgCvALAAkACPALEAjwCwALEAkQCQALIAkACxALIAkgCRALMAkQCyALMAkwCSALQAkgCzALQAlACTALUAkwC0ALUAlQCUALYAlAC1ALYAlgCVALcAlQC2ALcAlwCWALgAlgC3ALgAmACXALkAlwC4ALkAmQCYALoAmAC5ALoAmgCZALsAmQC6ALsAmwCaALwAmgC7ALwAnACbAL0AmwC8AL0AnQCcAL4AnAC9AL4AngCdAL8AnQC+AL8AnwCeAMAAngC/AMAAoACfAMEAnwDAAMEAoQCgAMIAoADBAMIAogChAMMAoQDCAMMAowCiAMQAogDDAMQApACjAMUAowDEAMUApgClAMcApQDGAMcApwCmAMgApgDHAMgAqACnAMkApwDIAMkAqQCoAMoAqADJAMoAqgCpAMsAqQDKAMsAqwCqAMwAqgDLAMwArACrAM0AqwDMAM0ArQCsAM4ArADNAM4ArgCtAM8ArQDOAM8ArwCuANAArgDPANAAsACvANEArwDQANEAsQCwANIAsADRANIAsgCxANMAsQDSANMAswCyANQAsgDTANQAtACzANUAswDUANUAtQC0ANYAtADVANYAtgC1ANcAtQDWANcAtwC2ANgAtgDXANgAuAC3ANkAtwDYANkAuQC4ANoAuADZANoAugC5ANsAuQDaANsAuwC6ANwAugDbANwAvAC7AN0AuwDcAN0AvQC8AN4AvADdAN4AvgC9AN8AvQDeAN8AvwC+AOAAvgDfAOAAwAC/AOEAvwDgAOEAwQDAAOIAwADhAOIAwgDBAOMAwQDiAOMAwwDCAOQAwgDjAOQAxADDAOUAwwDkAOUAxQDEAOYAxADlAOYAxwDGAOgAxgDnAOgAyADHAOkAxwDoAOkAyQDIAOoAyADpAOoAygDJAOsAyQDqAOsAywDKAOwAygDrAOwAzADLAO0AywDsAO0AzQDMAO4AzADtAO4AzgDNAO8AzQDuAO8AzwDOAPAAzgDvAPAA0ADPAPEAzwDwAPEA0QDQAPIA0ADxAPIA0gDRAPMA0QDyAPMA0wDSAPQA0gDzAPQA1ADTAPUA0wD0APUA1QDUAPYA1AD1APYA1gDVAPcA1QD2APcA1wDWAPgA1gD3APgA2ADXAPkA1wD4APkA2QDYAPoA2AD5APoA2gDZAPsA2QD6APsA2wDaAPwA2gD7APwA3ADbAP0A2wD8AP0A3QDcAP4A3AD9AP4A3gDdAP8A3QD+AP8A3wDeAAAB3gD/AAAB4ADfAAEB3wAAAQEB4QDgAAIB4AABAQIB4gDhAAMB4QACAQMB4wDiAAQB4gADAQQB5ADjAAUB4wAEAQUB5QDkAAYB5AAFAQYB5gDlAAcB5QAGAQcB6ADnAAkB5wAIAQkB6QDoAAoB6AAJAQoB6gDpAAsB6QAKAQsB6wDqAAwB6gALAQwB7ADrAA0B6wAMAQ0B7QDsAA4B7AANAQ4B7gDtAA8B7QAOAQ8B7wDuABAB7gAPARAB8ADvABEB7wAQAREB8QDwABIB8AARARIB8gDxABMB8QASARMB8wDyABQB8gATARQB9ADzABUB8wAUARUB9QD0ABYB9AAVARYB9gD1ABcB9QAWARcB9wD2ABgB9gAXARgB+AD3ABkB9wAYARkB+QD4ABoB+AAZARoB+gD5ABsB+QAaARsB+wD6ABwB+gAbARwB/AD7AB0B+wAcAR0B/QD8AB4B/AAdAR4B/gD9AB8B/QAeAR8B/wD+ACAB/gAfASABAAH/ACEB/wAgASEBAQEAASIBAAEhASIBAgEBASMBAQEiASMBAwECASQBAgEjASQBBAEDASUBAwEkASUBBQEEASYBBAElASYBBgEFAScBBQEmAScBBwEGASgBBgEnASgBCQEIASoBCAEpASoBCgEJASsBCQEqASsBCwEKASwBCgErASwBDAELAS0BCwEsAS0BDQEMAS4BDAEtAS4BDgENAS8BDQEuAS8BDwEOATABDgEvATABEAEPATEBDwEwATEBEQEQATIBEAExATIBEgERATMBEQEyATMBEwESATQBEgEzATQBFAETATUBEwE0ATUBFQEUATYBFAE1ATYBFgEVATcBFQE2ATcBFwEWATgBFgE3ATgBGAEXATkBFwE4ATkBGQEYAToBGAE5AToBGgEZATsBGQE6ATsBGwEaATwBGgE7ATwBHAEbAT0BGwE8AT0BHQEcAT4BHAE9AT4BHgEdAT8BHQE+AT8BHwEeAUABHgE/AUABIAEfAUEBHwFAAUEBIQEgAUIBIAFBAUIBIgEhAUMBIQFCAUMBIwEiAUQBIgFDAUQBJAEjAUUBIwFEAUUBJQEkAUYBJAFFAUYBJgElAUcBJQFGAUcBJwEmAUgBJgFHAUgBKAEnAUkBJwFIAUkBKgEpAUsBKQFKAUsBKwEqAUwBKgFLAUwBLAErAU0BKwFMAU0BLQEsAU4BLAFNAU4BLgEtAU8BLQFOAU8BLwEuAVABLgFPAVABMAEvAVEBLwFQAVEBMQEwAVIBMAFRAVIBMgExAVMBMQFSAVMBMwEyAVQBMgFTAVQBNAEzAVUBMwFUAVUBNQE0AVYBNAFVAVYBNgE1AVcBNQFWAVcBNwE2AVgBNgFXAVgBOAE3AVkBNwFYAVkBOQE4AVoBOAFZAVoBOgE5AVsBOQFaAVsBOwE6AVwBOgFbAVwBPAE7AV0BOwFcAV0BPQE8AV4BPAFdAV4BPgE9AV8BPQFeAV8BPwE+AWABPgFfAWABQAE/AWEBPwFgAWEBQQFAAWIBQAFhAWIBQgFBAWMBQQFiAWMBQwFCAWQBQgFjAWQBRAFDAWUBQwFkAWUBRQFEAWYBRAFlAWYBRgFFAWcBRQFmAWcBRwFGAWgBRgFnAWgBSAFHAWkBRwFoAWkBSQFIAWoBSAFpAWoBSwFKAWwBSgFrAWwBTAFLAW0BSwFsAW0BTQFMAW4BTAFtAW4BTgFNAW8BTQFuAW8BTwFOAXABTgFvAXABUAFPAXEBTwFwAXEBUQFQAXIBUAFxAXIBUgFRAXMBUQFyAXMBUwFSAXQBUgFzAXQBVAFTAXUBUwF0AXUBVQFUAXYBVAF1AXYBVgFVAXcBVQF2AXcBVwFWAXgBVgF3AXgBWAFXAXkBVwF4AXkBWQFYAXoBWAF5AXoBWgFZAXsBWQF6AXsBWwFaAXwBWgF7AXwBXAFbAX0BWwF8AX0BXQFcAX4BXAF9AX4BXgFdAX8BXQF+AX8BXwFeAYABXgF/AYABYAFfAYEBXwGAAYEBYQFgAYIBYAGBAYIBYgFhAYMBYQGCAYMBYwFiAYQBYgGDAYQBZAFjAYUBYwGEAYUBZQFkAYYBZAGFAYYBZgFlAYcBZQGGAYcBZwFmAYgBZgGHAYgBaAFnAYkBZwGIAYkBaQFoAYoBaAGJAYoBagFpAYsBaQGKAYsBbAFrAY0BawGMAY0BbQFsAY4BbAGNAY4BbgFtAY8BbQGOAY8BbwFuAZABbgGPAZABcAFvAZEBbwGQAZEBcQFwAZIBcAGRAZIBcgFxAZMBcQGSAZMBcwFyAZQBcgGTAZQBdAFzAZUBcwGUAZUBdQF0AZYBdAGVAZYBdgF1AZcBdQGWAZcBdwF2AZgBdgGXAZgBeAF3AZkBdwGYAZkBeQF4AZoBeAGZAZoBegF5AZsBeQGaAZsBewF6AZwBegGbAZwBfAF7AZ0BewGcAZ0BfQF8AZ4BfAGdAZ4BfgF9AZ8BfQGeAZ8BfwF+AaABfgGfAaABgAF/AaEBfwGgAaEBgQGAAaIBgAGhAaIBggGBAaMBgQGiAaMBgwGCAaQBggGjAaQBhAGDAaUBgwGkAaUBhQGEAaYBhAGlAaYBhgGFAacBhQGmAacBhwGGAagBhgGnAagBiAGHAakBhwGoAakBiQGIAaoBiAGpAaoBigGJAasBiQGqAasBiwGKAawBigGrAawBjQGMAa4BjAGtAa4BjgGNAa8BjQGuAa8BjwGOAbABjgGvAbABkAGPAbEBjwGwAbEBkQGQAbIBkAGxAbIBkgGRAbMBkQGyAbMBkwGSAbQBkgGzAbQBlAGTAbUBkwG0AbUBlQGUAbYBlAG1AbYBlgGVAbcBlQG2AbcBlwGWAbgBlgG3AbgBmAGXAbkBlwG4AbkBmQGYAboBmAG5AboBmgGZAbsBmQG6AbsBmwGaAbwBmgG7AbwBnAGbAb0BmwG8Ab0BnQGcAb4BnAG9Ab4BngGdAb8BnQG+Ab8BnwGeAcABngG/AcABoAGfAcEBnwHAAcEBoQGgAcIBoAHBAcIBogGhAcMBoQHCAcMBowGiAcQBogHDAcQBpAGjAcUBowHEAcUBpQGkAcYBpAHFAcYBpgGlAccBpQHGAccBpwGmAcgBpgHHAcgBqAGnAckBpwHIAckBqQGoAcoBqAHJAcoBqgGpAcsBqQHKAcsBqwGqAcwBqgHLAcwBrAGrAc0BqwHMAc0BrgGtAc8BrQHOAc8BrwGuAdABrgHPAdABsAGvAdEBrwHQAdEBsQGwAdIBsAHRAdIBsgGxAdMBsQHSAdMBswGyAdQBsgHTAdQBtAGzAdUBswHUAdUBtQG0AdYBtAHVAdYBtgG1AdcBtQHWAdcBtwG2AdgBtgHXAdgBuAG3AdkBtwHYAdkBuQG4AdoBuAHZAdoBugG5AdsBuQHaAdsBuwG6AdwBugHbAdwBvAG7Ad0BuwHcAd0BvQG8Ad4BvAHdAd4BvgG9Ad8BvQHeAd8BvwG+AeABvgHfAeABwAG/AeEBvwHgAeEBwQHAAeIBwAHhAeIBwgHBAeMBwQHiAeMBwwHCAeQBwgHjAeQBxAHDAeUBwwHkAeUBxQHEAeYBxAHlAeYBxgHFAecBxQHmAecBxwHGAegBxgHnAegByAHHAekBxwHoAekByQHIAeoByAHpAeoBygHJAesByQHqAesBywHKAewBygHrAewBzAHLAe0BywHsAe0BzQHMAe4BzAHtAe4BzwHOAfABzgHvAfAB0AHPAfEBzwHwAfEB0QHQAfIB0AHxAfIB0gHRAfMB0QHyAfMB0wHSAfQB0gHzAfQB1AHTAfUB0wH0AfUB1QHUAfYB1AH1AfYB1gHVAfcB1QH2AfcB1wHWAfgB1gH3AfgB2AHXAfkB1wH4AfkB2QHYAfoB2AH5AfoB2gHZAfsB2QH6AfsB2wHaAfwB2gH7AfwB3AHbAf0B2wH8Af0B3QHcAf4B3AH9Af4B3gHdAf8B3QH+Af8B3wHeAQAC3gH/AQAC4AHfAQEC3wEAAgEC4QHgAQIC4AEBAgIC4gHhAQMC4QECAgMC4wHiAQQC4gEDAgQC5AHjAQUC4wEEAgUC5QHkAQYC5AEFAgYC5gHlAQcC5QEGAgcC5wHmAQgC5gEHAggC6AHnAQkC5wEIAgkC6QHoAQoC6AEJAgoC6gHpAQsC6QEKAgsC6wHqAQwC6gELAgwC7AHrAQ0C6wEMAg0C7QHsAQ4C7AENAg4C7gHtAQ8C7QEOAg8C8AHvAREC8QHwARIC8gHxARMC8wHyARQC9AHzARUC9QH0ARYC9gH1ARcC9wH2ARgC+AH3ARkC+QH4ARoC+gH5ARsC+wH6ARwC/AH7AR0C/QH8AR4C/gH9AR8C/wH+ASACAAL/ASECAQIAAiICAgIBAiMCAwICAiQCBAIDAiUCBQIEAiYCBgIFAicCBwIGAigCCAIHAikCCQIIAioCCgIJAisCCwIKAiwCDAILAi0CDQIMAi4CDgINAi8CDwIOAjAC",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "uint16",
        "shape": [
         2880,
         1
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "2ed2242a-4677-47b4-b745-54a0a5fe88bf": {
      "buffers": [
       {
        "data": "AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/AAAAAAAAAAAAAIA/cXhzPwAAAAB6N54+GHkWPwAAAAC9G0+/GHkWvwAAAAC9G0+/cXhzvwAAAAB6N54+MjGNpQAAAAAAAIA/",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "float32",
        "shape": [
         96,
         3
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "38e60e6d-b7bf-4101-a6c4-097a16b4dc8f": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "Object3DModel",
      "state": {}
     },
     "3d6fba05-7cce-4b48-a8d2-90cc6539d1dd": {
      "buffers": [
       {
        "data": "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",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "float32",
        "shape": [
         561,
         3
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "4299cd67-d270-4871-af24-cf81caaf42a8": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "Object3DModel",
      "state": {}
     },
     "47e521ae-c606-4657-a1f9-d93f1eb43b36": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "DirectionalLightShadowModel",
      "state": {
       "camera": "IPY_MODEL_4a5b9e8e-de1c-4a88-9906-0f76b6e3668a"
      }
     },
     "4a5b9e8e-de1c-4a88-9906-0f76b6e3668a": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "OrthographicCameraModel",
      "state": {
       "bottom": -5,
       "far": 500,
       "left": -5,
       "near": 0.5,
       "projectionMatrix": [
        0.2,
        0,
        0,
        0,
        0,
        0.2,
        0,
        0,
        0,
        0,
        -0.004004004004004004,
        0,
        0,
        0,
        -1.002002002002002,
        1
       ],
       "right": 5,
       "top": 5
      }
     },
     "551703ef-3cac-40de-b87e-e0939d915fea": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "DirectionalLightShadowModel",
      "state": {
       "camera": "IPY_MODEL_598ae67d-a279-4811-945e-171f17024d87"
      }
     },
     "598ae67d-a279-4811-945e-171f17024d87": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "OrthographicCameraModel",
      "state": {
       "bottom": -5,
       "far": 500,
       "left": -5,
       "near": 0.5,
       "projectionMatrix": [
        0.2,
        0,
        0,
        0,
        0,
        0.2,
        0,
        0,
        0,
        0,
        -0.004004004004004004,
        0,
        0,
        0,
        -1.002002002002002,
        1
       ],
       "right": 5,
       "top": 5
      }
     },
     "6d74a63d-2705-4a85-a356-9b7ef13d3415": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "DirectionalLightShadowModel",
      "state": {
       "camera": "IPY_MODEL_87bca44e-706f-4bb0-a8e1-2a233c0b8510"
      }
     },
     "87bca44e-706f-4bb0-a8e1-2a233c0b8510": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "OrthographicCameraModel",
      "state": {
       "bottom": -5,
       "far": 500,
       "left": -5,
       "near": 0.5,
       "projectionMatrix": [
        0.2,
        0,
        0,
        0,
        0,
        0.2,
        0,
        0,
        0,
        0,
        -0.004004004004004004,
        0,
        0,
        0,
        -1.002002002002002,
        1
       ],
       "right": 5,
       "top": 5
      }
     },
     "a974aa85-db6d-43ad-9d34-e2f0b4d17e1c": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "OrthographicCameraModel",
      "state": {
       "bottom": -5,
       "far": 500,
       "left": -5,
       "near": 0.5,
       "projectionMatrix": [
        0.2,
        0,
        0,
        0,
        0,
        0.2,
        0,
        0,
        0,
        0,
        -0.004004004004004004,
        0,
        0,
        0,
        -1.002002002002002,
        1
       ],
       "right": 5,
       "top": 5
      }
     },
     "be516a93-e440-4dc2-93e7-16defd1f7d81": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "Object3DModel",
      "state": {}
     },
     "c2d6d53f-d1a9-461e-977b-5376cf36d941": {
      "buffers": [
       {
        "data": "AAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAgAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAAAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAAAAAgAAAgD8AAACAwsVHvr4Uez8AAAAAFe9Dvr4Uez8M5Rs905A4vr4Uez815pg90Romvr4Uez+t+d09r0INvr4Uez+vQg0+rfndvb4Uez/RGiY+NeaYvb4Uez/TkDg+DOUbvb4Uez8V70M+n1xco74Uez/CxUc+DOUbPb4Uez8V70M+NeaYPb4Uez/TkDg+rfndPb4Uez/RGiY+r0INPr4Uez+vQg0+0RomPr4Uez+t+d0905A4Pr4Uez815pg9Fe9DPr4Uez8M5Rs9wsVHPr4Uez+fXNwjFe9DPr4Uez8M5Ru905A4Pr4Uez815pi90RomPr4Uez+t+d29r0INPr4Uez+vQg2+rfndPb4Uez/RGia+NeaYPb4Uez/TkDi+DOUbPb4Uez8V70O+d0UlJL4Uez/CxUe+DOUbvb4Uez8V70O+NeaYvb4Uez/TkDi+rfndvb4Uez/RGia+r0INvr4Uez+vQg2+0Romvr4Uez+t+d2905A4vr4Uez815pi9Fe9Dvr4Uez8M5Ru9wsVHvr4Uez+fXFykFe/Dvl6DbD8AAAAASivAvl6DbD815pg98wS1vl6DbD8a9hU+wemivl6DbD/JtVk+1IuKvl6DbD/Ui4o+ybVZvl6DbD/B6aI+GvYVvl6DbD/zBLU+NeaYvV6DbD9KK8A+qyDYo16DbD8V78M+NeaYPV6DbD9KK8A+GvYVPl6DbD/zBLU+ybVZPl6DbD/B6aI+1IuKPl6DbD/Ui4o+wemiPl6DbD/JtVk+8wS1Pl6DbD8a9hU+SivAPl6DbD815pg9Fe/DPl6DbD+rIFgkSivAPl6DbD815pi98wS1Pl6DbD8a9hW+wemiPl6DbD/JtVm+1IuKPl6DbD/Ui4q+ybVZPl6DbD/B6aK+GvYVPl6DbD/zBLW+NeaYPV6DbD9KK8C+gBiiJF6DbD8V78O+NeaYvV6DbD9KK8C+GvYVvl6DbD/zBLW+ybVZvl6DbD/B6aK+1IuKvl6DbD/Ui4q+wemivl6DbD/JtVm+8wS1vl6DbD8a9hW+SivAvl6DbD815pi9Fe/Dvl6DbD+rINik2jkOvzHbVD8AAAAAP34LvzHbVD+t+d09UWYDvzHbVD/JtVk+XoPsvjHbVD91CJ4+TiPJvjHbVD9OI8k+dQievjHbVD9eg+w+ybVZvjHbVD9RZgM/rfndvTHbVD8/fgs/Y+IcpDHbVD/aOQ4/rfndPTHbVD8/fgs/ybVZPjHbVD9RZgM/dQiePjHbVD9eg+w+TiPJPjHbVD9OI8k+XoPsPjHbVD91CJ4+UWYDPzHbVD/JtVk+P34LPzHbVD+t+d092jkOPzHbVD9j4pwkP34LPzHbVD+t+d29UWYDPzHbVD/JtVm+XoPsPjHbVD91CJ6+TiPJPjHbVD9OI8m+dQiePjHbVD9eg+y+ybVZPjHbVD9RZgO/rfndPTHbVD8/fgu/lVPrJDHbVD/aOQ6/rfndvTHbVD8/fgu/ybVZvjHbVD9RZgO/dQievjHbVD9eg+y+TiPJvjHbVD9OI8m+XoPsvjHbVD91CJ6+UWYDvzHbVD/JtVm+P34LvzHbVD+t+d292jkOvzHbVD9j4hyl8wQ1v/MENT8AAAAAhooxv/MENT+vQg0+dT0nv/MENT/Ui4o+F4MWv/MENT9OI8k+AAAAv/MENT8AAAA/TiPJvvMENT8XgxY/1IuKvvMENT91PSc/r0INvvMENT+GijE/Bq1HpPMENT/zBDU/r0INPvMENT+GijE/1IuKPvMENT91PSc/TiPJPvMENT8XgxY/AAAAP/MENT8AAAA/F4MWP/MENT9OI8k+dT0nP/MENT/Ui4o+hooxP/MENT+vQg0+8wQ1P/MENT8GrcckhooxP/MENT+vQg2+dT0nP/MENT/Ui4q+F4MWP/MENT9OI8m+AAAAP/MENT8AAAC/TiPJPvMENT8Xgxa/1IuKPvMENT91PSe/r0INPvMENT+GijG/xMEVJfMENT/zBDW/r0INvvMENT+GijG/1IuKvvMENT91PSe/TiPJvvMENT8Xgxa/AAAAv/MENT8AAAC/F4MWv/MENT9OI8m+dT0nv/MENT/Ui4q+hooxv/MENT+vQg2+8wQ1v/MENT8GrUelMdtUv9o5Dj8AAAAAKcRQv9o5Dj/RGiY+TKdEv9o5Dj/B6aI+xfswv9o5Dj9eg+w+F4MWv9o5Dj8XgxY/XoPsvto5Dj/F+zA/wemivto5Dj9Mp0Q/0Romvto5Dj8pxFA/Q8tqpNo5Dj8x21Q/0RomPto5Dj8pxFA/wemiPto5Dj9Mp0Q/XoPsPto5Dj/F+zA/F4MWP9o5Dj8XgxY/xfswP9o5Dj9eg+w+TKdEP9o5Dj/B6aI+KcRQP9o5Dj/RGiY+MdtUP9o5Dj9Dy+okKcRQP9o5Dj/RGia+TKdEP9o5Dj/B6aK+xfswP9o5Dj9eg+y+F4MWP9o5Dj8Xgxa/XoPsPto5Dj/F+zC/wemiPto5Dj9Mp0S/0RomPto5Dj8pxFC/chgwJdo5Dj8x21S/0Romvto5Dj8pxFC/wemivto5Dj9Mp0S/XoPsvto5Dj/F+zC/F4MWv9o5Dj8Xgxa/xfswv9o5Dj9eg+y+TKdEv9o5Dj/B6aK+KcRQv9o5Dj/RGia+MdtUv9o5Dj9Dy2qlXoNsvxXvwz4AAAAA+PdnvxXvwz7TkDg+eoJavxXvwz7zBLU+TKdEvxXvwz5RZgM/dT0nvxXvwz51PSc/UWYDvxXvwz5Mp0Q/8wS1vhXvwz56glo/05A4vhXvwz7492c/znGCpBXvwz5eg2w/05A4PhXvwz7492c/8wS1PhXvwz56glo/UWYDPxXvwz5Mp0Q/dT0nPxXvwz51PSc/TKdEPxXvwz5RZgM/eoJaPxXvwz7zBLU++PdnPxXvwz7TkDg+XoNsPxXvwz7OcQIl+PdnPxXvwz7TkDi+eoJaPxXvwz7zBLW+TKdEPxXvwz5RZgO/dT0nPxXvwz51PSe/UWYDPxXvwz5Mp0S/8wS1PhXvwz56glq/05A4PhXvwz7492e/tapDJRXvwz5eg2y/05A4vhXvwz7492e/8wS1vhXvwz56glq/UWYDvxXvwz5Mp0S/dT0nvxXvwz51PSe/TKdEvxXvwz5RZgO/eoJavxXvwz7zBLW++PdnvxXvwz7TkDi+XoNsvxXvwz7OcYKlvhR7v8LFRz4AAAAAr0F2v8LFRz4V70M++Pdnv8LFRz5KK8A+KcRQv8LFRz4/fgs/hooxv8LFRz6GijE/P34Lv8LFRz4pxFA/SivAvsLFRz7492c/Fe9DvsLFRz6vQXY/rXqKpMLFRz6+FHs/Fe9DPsLFRz6vQXY/SivAPsLFRz7492c/P34LP8LFRz4pxFA/hooxP8LFRz6GijE/KcRQP8LFRz4/fgs/+PdnP8LFRz5KK8A+r0F2P8LFRz4V70M+vhR7P8LFRz6tegolr0F2P8LFRz4V70O++PdnP8LFRz5KK8C+KcRQP8LFRz4/fgu/hooxP8LFRz6GijG/P34LP8LFRz4pxFC/SivAPsLFRz7492e/Fe9DPsLFRz6vQXa/A7hPJcLFRz6+FHu/Fe9DvsLFRz6vQXa/SivAvsLFRz7492e/P34Lv8LFRz4pxFC/hooxv8LFRz6GijG/KcRQv8LFRz4/fgu/+Pdnv8LFRz5KK8C+r0F2v8LFRz4V70O+vhR7v8LFRz6teoqlAACAvzIxjSQAAAAAvhR7vzIxjSTCxUc+XoNsvzIxjSQV78M+MdtUvzIxjSTaOQ4/8wQ1vzIxjSTzBDU/2jkOvzIxjSQx21Q/Fe/DvjIxjSReg2w/wsVHvjIxjSS+FHs/MjGNpDIxjSQAAIA/wsVHPjIxjSS+FHs/Fe/DPjIxjSReg2w/2jkOPzIxjSQx21Q/8wQ1PzIxjSTzBDU/MdtUPzIxjSTaOQ4/XoNsPzIxjSQV78M+vhR7PzIxjSTCxUc+AACAPzIxjSQyMQ0lvhR7PzIxjSTCxUe+XoNsPzIxjSQV78O+MdtUPzIxjSTaOQ6/8wQ1PzIxjSTzBDW/2jkOPzIxjSQx21S/Fe/DPjIxjSReg2y/wsVHPjIxjSS+FHu/yslTJTIxjSQAAIC/wsVHvjIxjSS+FHu/Fe/DvjIxjSReg2y/2jkOvzIxjSQx21S/8wQ1vzIxjSTzBDW/MdtUvzIxjSTaOQ6/XoNsvzIxjSQV78O+vhR7vzIxjSTCxUe+AACAvzIxjSQyMY2lvhR7v8LFR74AAAAAr0F2v8LFR74V70M++Pdnv8LFR75KK8A+KcRQv8LFR74/fgs/hooxv8LFR76GijE/P34Lv8LFR74pxFA/SivAvsLFR77492c/Fe9DvsLFR76vQXY/rXqKpMLFR76+FHs/Fe9DPsLFR76vQXY/SivAPsLFR77492c/P34LP8LFR74pxFA/hooxP8LFR76GijE/KcRQP8LFR74/fgs/+PdnP8LFR75KK8A+r0F2P8LFR74V70M+vhR7P8LFR76tegolr0F2P8LFR74V70O++PdnP8LFR75KK8C+KcRQP8LFR74/fgu/hooxP8LFR76GijG/P34LP8LFR74pxFC/SivAPsLFR77492e/Fe9DPsLFR76vQXa/A7hPJcLFR76+FHu/Fe9DvsLFR76vQXa/SivAvsLFR77492e/P34Lv8LFR74pxFC/hooxv8LFR76GijG/KcRQv8LFR74/fgu/+Pdnv8LFR75KK8C+r0F2v8LFR74V70O+vhR7v8LFR76teoqlXoNsvxXvw74AAAAA+PdnvxXvw77TkDg+eoJavxXvw77zBLU+TKdEvxXvw75RZgM/dT0nvxXvw751PSc/UWYDvxXvw75Mp0Q/8wS1vhXvw756glo/05A4vhXvw77492c/znGCpBXvw75eg2w/05A4PhXvw77492c/8wS1PhXvw756glo/UWYDPxXvw75Mp0Q/dT0nPxXvw751PSc/TKdEPxXvw75RZgM/eoJaPxXvw77zBLU++PdnPxXvw77TkDg+XoNsPxXvw77OcQIl+PdnPxXvw77TkDi+eoJaPxXvw77zBLW+TKdEPxXvw75RZgO/dT0nPxXvw751PSe/UWYDPxXvw75Mp0S/8wS1PhXvw756glq/05A4PhXvw77492e/tapDJRXvw75eg2y/05A4vhXvw77492e/8wS1vhXvw756glq/UWYDvxXvw75Mp0S/dT0nvxXvw751PSe/TKdEvxXvw75RZgO/eoJavxXvw77zBLW++PdnvxXvw77TkDi+XoNsvxXvw77OcYKlMdtUv9o5Dr8AAAAAKcRQv9o5Dr/RGiY+TKdEv9o5Dr/B6aI+xfswv9o5Dr9eg+w+F4MWv9o5Dr8XgxY/XoPsvto5Dr/F+zA/wemivto5Dr9Mp0Q/0Romvto5Dr8pxFA/Q8tqpNo5Dr8x21Q/0RomPto5Dr8pxFA/wemiPto5Dr9Mp0Q/XoPsPto5Dr/F+zA/F4MWP9o5Dr8XgxY/xfswP9o5Dr9eg+w+TKdEP9o5Dr/B6aI+KcRQP9o5Dr/RGiY+MdtUP9o5Dr9Dy+okKcRQP9o5Dr/RGia+TKdEP9o5Dr/B6aK+xfswP9o5Dr9eg+y+F4MWP9o5Dr8Xgxa/XoPsPto5Dr/F+zC/wemiPto5Dr9Mp0S/0RomPto5Dr8pxFC/chgwJdo5Dr8x21S/0Romvto5Dr8pxFC/wemivto5Dr9Mp0S/XoPsvto5Dr/F+zC/F4MWv9o5Dr8Xgxa/xfswv9o5Dr9eg+y+TKdEv9o5Dr/B6aK+KcRQv9o5Dr/RGia+MdtUv9o5Dr9Dy2ql8wQ1v/MENb8AAAAAhooxv/MENb+vQg0+dT0nv/MENb/Ui4o+F4MWv/MENb9OI8k+AAAAv/MENb8AAAA/TiPJvvMENb8XgxY/1IuKvvMENb91PSc/r0INvvMENb+GijE/Bq1HpPMENb/zBDU/r0INPvMENb+GijE/1IuKPvMENb91PSc/TiPJPvMENb8XgxY/AAAAP/MENb8AAAA/F4MWP/MENb9OI8k+dT0nP/MENb/Ui4o+hooxP/MENb+vQg0+8wQ1P/MENb8GrcckhooxP/MENb+vQg2+dT0nP/MENb/Ui4q+F4MWP/MENb9OI8m+AAAAP/MENb8AAAC/TiPJPvMENb8Xgxa/1IuKPvMENb91PSe/r0INPvMENb+GijG/xMEVJfMENb/zBDW/r0INvvMENb+GijG/1IuKvvMENb91PSe/TiPJvvMENb8Xgxa/AAAAv/MENb8AAAC/F4MWv/MENb9OI8m+dT0nv/MENb/Ui4q+hooxv/MENb+vQg2+8wQ1v/MENb8GrUel2jkOvzHbVL8AAAAAP34LvzHbVL+t+d09UWYDvzHbVL/JtVk+XoPsvjHbVL91CJ4+TiPJvjHbVL9OI8k+dQievjHbVL9eg+w+ybVZvjHbVL9RZgM/rfndvTHbVL8/fgs/Y+IcpDHbVL/aOQ4/rfndPTHbVL8/fgs/ybVZPjHbVL9RZgM/dQiePjHbVL9eg+w+TiPJPjHbVL9OI8k+XoPsPjHbVL91CJ4+UWYDPzHbVL/JtVk+P34LPzHbVL+t+d092jkOPzHbVL9j4pwkP34LPzHbVL+t+d29UWYDPzHbVL/JtVm+XoPsPjHbVL91CJ6+TiPJPjHbVL9OI8m+dQiePjHbVL9eg+y+ybVZPjHbVL9RZgO/rfndPTHbVL8/fgu/lVPrJDHbVL/aOQ6/rfndvTHbVL8/fgu/ybVZvjHbVL9RZgO/dQievjHbVL9eg+y+TiPJvjHbVL9OI8m+XoPsvjHbVL91CJ6+UWYDvzHbVL/JtVm+P34LvzHbVL+t+d292jkOvzHbVL9j4hylFe/Dvl6DbL8AAAAASivAvl6DbL815pg98wS1vl6DbL8a9hU+wemivl6DbL/JtVk+1IuKvl6DbL/Ui4o+ybVZvl6DbL/B6aI+GvYVvl6DbL/zBLU+NeaYvV6DbL9KK8A+qyDYo16DbL8V78M+NeaYPV6DbL9KK8A+GvYVPl6DbL/zBLU+ybVZPl6DbL/B6aI+1IuKPl6DbL/Ui4o+wemiPl6DbL/JtVk+8wS1Pl6DbL8a9hU+SivAPl6DbL815pg9Fe/DPl6DbL+rIFgkSivAPl6DbL815pi98wS1Pl6DbL8a9hW+wemiPl6DbL/JtVm+1IuKPl6DbL/Ui4q+ybVZPl6DbL/B6aK+GvYVPl6DbL/zBLW+NeaYPV6DbL9KK8C+gBiiJF6DbL8V78O+NeaYvV6DbL9KK8C+GvYVvl6DbL/zBLW+ybVZvl6DbL/B6aK+1IuKvl6DbL/Ui4q+wemivl6DbL/JtVm+8wS1vl6DbL8a9hW+SivAvl6DbL815pi9Fe/Dvl6DbL+rINikwsVHvr4Ue78AAAAAFe9Dvr4Ue78M5Rs905A4vr4Ue7815pg90Romvr4Ue7+t+d09r0INvr4Ue7+vQg0+rfndvb4Ue7/RGiY+NeaYvb4Ue7/TkDg+DOUbvb4Ue78V70M+n1xco74Ue7/CxUc+DOUbPb4Ue78V70M+NeaYPb4Ue7/TkDg+rfndPb4Ue7/RGiY+r0INPr4Ue7+vQg0+0RomPr4Ue7+t+d0905A4Pr4Ue7815pg9Fe9DPr4Ue78M5Rs9wsVHPr4Ue7+fXNwjFe9DPr4Ue78M5Ru905A4Pr4Ue7815pi90RomPr4Ue7+t+d29r0INPr4Ue7+vQg2+rfndPb4Ue7/RGia+NeaYPb4Ue7/TkDi+DOUbPb4Ue78V70O+d0UlJL4Ue7/CxUe+DOUbvb4Ue78V70O+NeaYvb4Ue7/TkDi+rfndvb4Ue7/RGia+r0INvr4Ue7+vQg2+0Romvr4Ue7+t+d2905A4vr4Ue7815pi9Fe9Dvr4Ue78M5Ru9wsVHvr4Ue7+fXFykMjENpQAAgL8AAAAArXoKpQAAgL+fXNwjznECpQAAgL+rIFgkQ8vqpAAAgL9j4pwkBq3HpAAAgL8GrcckY+KcpAAAgL9Dy+okqyBYpAAAgL/OcQIln1zcowAAgL+tegoldL4bigAAgL8yMQ0ln1zcIwAAgL+tegolqyBYJAAAgL/OcQIlY+KcJAAAgL9Dy+okBq3HJAAAgL8GrcckQ8vqJAAAgL9j4pwkznECJQAAgL+rIFgkrXoKJQAAgL+fXNwjMjENJQAAgL90vpsKrXoKJQAAgL+fXNyjznECJQAAgL+rIFikQ8vqJAAAgL9j4pykBq3HJAAAgL8GrcekY+KcJAAAgL9Dy+qkqyBYJAAAgL/OcQKln1zcIwAAgL+tegqlrp3pCgAAgL8yMQ2ln1zcowAAgL+tegqlqyBYpAAAgL/OcQKlY+KcpAAAgL9Dy+qkBq3HpAAAgL8GrcekQ8vqpAAAgL9j4pykznECpQAAgL+rIFikrXoKpQAAgL+fXNyjMjENpQAAgL90vhuL",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "float32",
        "shape": [
         561,
         3
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "df9bc36f-14ba-466c-8d32-7f97afd98169": {
      "buffers": [
       {
        "data": "AAAGAAEABgAHAAEABgAMAAcADAANAAcADAASAA0AEgATAA0AEgAYABMAGAAZABMAGAAeABkAHgAfABkAHgAkAB8AJAAlAB8AJAAqACUAKgArACUAKgAwACsAMAAxACsAMAA2ADEANgA3ADEANgA8ADcAPAA9ADcAPABCAD0AQgBDAD0AQgBIAEMASABJAEMASABOAEkATgBPAEkATgBUAE8AVABVAE8AVABaAFUAWgBbAFUAAQAHAAIABwAIAAIABwANAAgADQAOAAgADQATAA4AEwAUAA4AEwAZABQAGQAaABQAGQAfABoAHwAgABoAHwAlACAAJQAmACAAJQArACYAKwAsACYAKwAxACwAMQAyACwAMQA3ADIANwA4ADIANwA9ADgAPQA+ADgAPQBDAD4AQwBEAD4AQwBJAEQASQBKAEQASQBPAEoATwBQAEoATwBVAFAAVQBWAFAAVQBbAFYAWwBcAFYAAgAIAAMACAAJAAMACAAOAAkADgAPAAkADgAUAA8AFAAVAA8AFAAaABUAGgAbABUAGgAgABsAIAAhABsAIAAmACEAJgAnACEAJgAsACcALAAtACcALAAyAC0AMgAzAC0AMgA4ADMAOAA5ADMAOAA+ADkAPgA/ADkAPgBEAD8ARABFAD8ARABKAEUASgBLAEUASgBQAEsAUABRAEsAUABWAFEAVgBXAFEAVgBcAFcAXABdAFcAAwAJAAQACQAKAAQACQAPAAoADwAQAAoADwAVABAAFQAWABAAFQAbABYAGwAcABYAGwAhABwAIQAiABwAIQAnACIAJwAoACIAJwAtACgALQAuACgALQAzAC4AMwA0AC4AMwA5ADQAOQA6ADQAOQA/ADoAPwBAADoAPwBFAEAARQBGAEAARQBLAEYASwBMAEYASwBRAEwAUQBSAEwAUQBXAFIAVwBYAFIAVwBdAFgAXQBeAFgABAAKAAUACgALAAUACgAQAAsAEAARAAsAEAAWABEAFgAXABEAFgAcABcAHAAdABcAHAAiAB0AIgAjAB0AIgAoACMAKAApACMAKAAuACkALgAvACkALgA0AC8ANAA1AC8ANAA6ADUAOgA7ADUAOgBAADsAQABBADsAQABGAEEARgBHAEEARgBMAEcATABNAEcATABSAE0AUgBTAE0AUgBYAFMAWABZAFMAWABeAFkAXgBfAFkA",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "array": {
        "dtype": "uint16",
        "shape": [
         450,
         1
        ]
       },
       "normalized": true,
       "version": 1
      }
     },
     "ed20e9cd-3bd3-43ae-bf39-d4ac11e691ba": {
      "model_module": "jupyter-threejs",
      "model_module_version": "2.0.0",
      "model_name": "Object3DModel",
      "state": {}
     },
     "pythree_example_model_001": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SphereBufferGeometryModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "heightSegments": 16,
       "widthSegments": 32
      }
     },
     "pythree_example_model_002": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshStandardMaterialModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "color": "red"
      }
     },
     "pythree_example_model_003": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "geometry": "IPY_MODEL_pythree_example_model_001",
       "material": "IPY_MODEL_pythree_example_model_002",
       "morphTargetInfluences": []
      }
     },
     "pythree_example_model_004": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BoxBufferGeometryModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": ""
      }
     },
     "pythree_example_model_005": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshPhysicalMaterialModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "color": "green"
      }
     },
     "pythree_example_model_006": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "geometry": "IPY_MODEL_pythree_example_model_004",
       "material": "IPY_MODEL_pythree_example_model_005",
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        2,
        0,
        4,
        1
       ],
       "morphTargetInfluences": [],
       "position": [
        2,
        0,
        4
       ]
      }
     },
     "pythree_example_model_007": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "PerspectiveCameraModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "aspect": 1.5,
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        10,
        6,
        10,
        1
       ],
       "position": [
        10,
        6,
        10
       ],
       "projectionMatrix": [
        1.4296712803397058,
        0,
        0,
        0,
        0,
        2.1445069205095586,
        0,
        0,
        0,
        0,
        -1.00010000500025,
        -1,
        0,
        0,
        -0.200010000500025,
        0
       ]
      }
     },
     "pythree_example_model_008": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "DirectionalLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "matrixWorldNeedsUpdate": true,
       "position": [
        0,
        10,
        10
       ],
       "shadow": "IPY_MODEL_6d74a63d-2705-4a85-a356-9b7ef13d3415",
       "target": "IPY_MODEL_38e60e6d-b7bf-4101-a6c4-097a16b4dc8f"
      }
     },
     "pythree_example_model_009": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AmbientLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": ""
      }
     },
     "pythree_example_model_013": {
      "buffers": [
       {
        "data": "AAAAAAIAAAAFAAAA",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAgQQAAwEAAACBBmpnJQIXrcUCamclAUrg+wD0KVz8zMxNB",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "VectorKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".position",
       "times": {
        "dtype": "int32",
        "shape": [
         3
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         9
        ]
       }
      }
     },
     "pythree_example_model_014": {
      "buffers": [
       {
        "data": "AAAAAAIAAAAFAAAA",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "f2o8vgAAwD6/Dpw9FK5nP39qPL4AAMA+vw6cPRSuZz/FIDC9d74fvmwm37sIrHw/",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "QuaternionKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".quaternion",
       "times": {
        "dtype": "int32",
        "shape": [
         3
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         12
        ]
       }
      }
     },
     "pythree_example_model_015": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationClipModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "duration": 5,
       "tracks": [
        "IPY_MODEL_pythree_example_model_013",
        "IPY_MODEL_pythree_example_model_014"
       ]
      }
     },
     "pythree_example_model_016": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationMixerModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "rootObject": "IPY_MODEL_pythree_example_model_007"
      }
     },
     "pythree_example_model_017": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationActionModel",
      "state": {
       "_model_module": "jupyter-threejs",
       "_model_module_version": "^2.0.0",
       "_model_name": "AnimationActionModel",
       "_view_module_version": "^2.0.0",
       "clip": "IPY_MODEL_pythree_example_model_015",
       "layout": "IPY_MODEL_pythree_example_model_018",
       "localRoot": "IPY_MODEL_pythree_example_model_007",
       "mixer": "IPY_MODEL_pythree_example_model_016",
       "repititions": "inf"
      }
     },
     "pythree_example_model_018": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_019": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SceneModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_003",
        "IPY_MODEL_pythree_example_model_006",
        "IPY_MODEL_pythree_example_model_007",
        "IPY_MODEL_pythree_example_model_008",
        "IPY_MODEL_pythree_example_model_009"
       ]
      }
     },
     "pythree_example_model_020": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "OrbitControlsModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "controlling": "IPY_MODEL_pythree_example_model_007",
       "maxAzimuthAngle": "inf",
       "maxDistance": "inf",
       "maxZoom": "inf",
       "minAzimuthAngle": "-inf"
      }
     },
     "pythree_example_model_021": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "RendererModel",
      "state": {
       "_height": 400,
       "_model_module_version": "^2.0.0",
       "_view_module_version": "^2.0.0",
       "_width": 600,
       "camera": "IPY_MODEL_pythree_example_model_007",
       "controls": [
        "IPY_MODEL_pythree_example_model_020"
       ],
       "layout": "IPY_MODEL_pythree_example_model_022",
       "scene": "IPY_MODEL_pythree_example_model_019",
       "shadowMap": "IPY_MODEL_pythree_example_model_023"
      }
     },
     "pythree_example_model_022": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_023": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "WebGLShadowMapModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": ""
      }
     },
     "pythree_example_model_024": {
      "buffers": [
       {
        "data": "AAAAAAEAAAA=",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AQAAAAAAAAAAAAAAAAAAAAAAAAABAAAA",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "ColorKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".material.color",
       "times": {
        "dtype": "int32",
        "shape": [
         2
        ]
       },
       "values": {
        "dtype": "int32",
        "shape": [
         6
        ]
       }
      }
     },
     "pythree_example_model_025": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationClipModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "duration": 1.5,
       "tracks": [
        "IPY_MODEL_pythree_example_model_024"
       ]
      }
     },
     "pythree_example_model_026": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationMixerModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "rootObject": "IPY_MODEL_pythree_example_model_003"
      }
     },
     "pythree_example_model_027": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationActionModel",
      "state": {
       "_model_module": "jupyter-threejs",
       "_model_module_version": "^2.0.0",
       "_model_name": "AnimationActionModel",
       "_view_module_version": "^2.0.0",
       "clip": "IPY_MODEL_pythree_example_model_025",
       "layout": "IPY_MODEL_pythree_example_model_028",
       "localRoot": "IPY_MODEL_pythree_example_model_003",
       "mixer": "IPY_MODEL_pythree_example_model_026",
       "repititions": "inf"
      }
     },
     "pythree_example_model_028": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_029": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "ParametricGeometryModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "func": "\nfunction f(origu, origv, out) {\n    // scale u and v to the ranges I want: [0, 2*pi]\n    var u = 2*Math.PI*origu;\n    var v = 2*Math.PI*origv;\n    \n    var x = Math.sin(u);\n    var y = Math.cos(v);\n    var z = Math.cos(u+v);\n    \n    out.set(x,y,z)\n}\n",
       "slices": 16,
       "stacks": 16
      }
     },
     "pythree_example_model_030": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshLambertMaterialModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "color": "green"
      }
     },
     "pythree_example_model_031": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "geometry": "IPY_MODEL_pythree_example_model_029",
       "material": "IPY_MODEL_pythree_example_model_030",
       "morphTargetInfluences": []
      }
     },
     "pythree_example_model_032": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshLambertMaterialModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "color": "yellow",
       "side": "BackSide"
      }
     },
     "pythree_example_model_033": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "geometry": "IPY_MODEL_pythree_example_model_029",
       "material": "IPY_MODEL_pythree_example_model_032",
       "morphTargetInfluences": []
      }
     },
     "pythree_example_model_034": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "GroupModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_031",
        "IPY_MODEL_pythree_example_model_033"
       ]
      }
     },
     "pythree_example_model_035": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "PerspectiveCameraModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "aspect": 1.5,
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        10,
        6,
        10,
        1
       ],
       "position": [
        10,
        6,
        10
       ],
       "projectionMatrix": [
        1.4296712803397058,
        0,
        0,
        0,
        0,
        2.1445069205095586,
        0,
        0,
        0,
        0,
        -1.00010000500025,
        -1,
        0,
        0,
        -0.200010000500025,
        0
       ]
      }
     },
     "pythree_example_model_036": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "DirectionalLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "intensity": 0.6,
       "matrixWorldNeedsUpdate": true,
       "position": [
        3,
        5,
        1
       ],
       "shadow": "IPY_MODEL_551703ef-3cac-40de-b87e-e0939d915fea",
       "target": "IPY_MODEL_4299cd67-d270-4871-af24-cf81caaf42a8"
      }
     },
     "pythree_example_model_037": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AmbientLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "intensity": 0.5
      }
     },
     "pythree_example_model_038": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SceneModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_034",
        "IPY_MODEL_pythree_example_model_035",
        "IPY_MODEL_pythree_example_model_036",
        "IPY_MODEL_pythree_example_model_037"
       ]
      }
     },
     "pythree_example_model_039": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "OrbitControlsModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "controlling": "IPY_MODEL_pythree_example_model_035",
       "maxAzimuthAngle": "inf",
       "maxDistance": "inf",
       "maxZoom": "inf",
       "minAzimuthAngle": "-inf"
      }
     },
     "pythree_example_model_040": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "RendererModel",
      "state": {
       "_height": 400,
       "_model_module_version": "^2.0.0",
       "_view_module_version": "^2.0.0",
       "_width": 600,
       "camera": "IPY_MODEL_pythree_example_model_035",
       "controls": [
        "IPY_MODEL_pythree_example_model_039"
       ],
       "layout": "IPY_MODEL_pythree_example_model_041",
       "scene": "IPY_MODEL_pythree_example_model_038",
       "shadowMap": "IPY_MODEL_pythree_example_model_042"
      }
     },
     "pythree_example_model_041": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_042": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "WebGLShadowMapModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": ""
      }
     },
     "pythree_example_model_046": {
      "buffers": [
       {
        "data": "AAAAAAIAAAA=",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAAMP1yEA=",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".rotation[y]",
       "times": {
        "dtype": "int32",
        "shape": [
         2
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         2
        ]
       }
      }
     },
     "pythree_example_model_047": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationClipModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "duration": 2,
       "tracks": [
        "IPY_MODEL_pythree_example_model_046"
       ]
      }
     },
     "pythree_example_model_048": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationMixerModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "rootObject": "IPY_MODEL_pythree_example_model_034"
      }
     },
     "pythree_example_model_049": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationActionModel",
      "state": {
       "_model_module": "jupyter-threejs",
       "_model_module_version": "^2.0.0",
       "_model_name": "AnimationActionModel",
       "_view_module_version": "^2.0.0",
       "clip": "IPY_MODEL_pythree_example_model_047",
       "layout": "IPY_MODEL_pythree_example_model_050",
       "localRoot": "IPY_MODEL_pythree_example_model_034",
       "mixer": "IPY_MODEL_pythree_example_model_048",
       "repititions": "inf"
      }
     },
     "pythree_example_model_050": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_051": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SphereBufferGeometryModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "heightSegments": 16,
       "widthSegments": 32
      }
     },
     "pythree_example_model_052": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BufferGeometryModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "attributes": {
        "normal": "IPY_MODEL_3d6fba05-7cce-4b48-a8d2-90cc6539d1dd",
        "position": "IPY_MODEL_c2d6d53f-d1a9-461e-977b-5376cf36d941",
        "uv": "IPY_MODEL_11242342-d8f9-46a0-9b69-96ad891e4e00"
       },
       "index": "IPY_MODEL_2bd38c3d-390b-4c4e-993f-dc4160143cd7",
       "morphAttributes": {
        "position": [
         "IPY_MODEL_pythree_example_model_057"
        ]
       }
      }
     },
     "pythree_example_model_057": {
      "buffers": [
       {
        "data": "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",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "array": {
        "dtype": "float32",
        "shape": [
         561,
         3
        ]
       },
       "normalized": true,
       "version": 2
      }
     },
     "pythree_example_model_058": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshPhongMaterialModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "color": "#ff3333",
       "morphTargets": true,
       "shininess": 150
      }
     },
     "pythree_example_model_059": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "geometry": "IPY_MODEL_pythree_example_model_052",
       "material": "IPY_MODEL_pythree_example_model_058"
      }
     },
     "pythree_example_model_060": {
      "buffers": [
       {
        "data": "AAAAAAAAwD8AAEBA",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAAAAAIEAAAAAA",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".morphTargetInfluences[0]",
       "times": {
        "dtype": "float32",
        "shape": [
         3
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         3
        ]
       }
      }
     },
     "pythree_example_model_061": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationClipModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "duration": 3,
       "tracks": [
        "IPY_MODEL_pythree_example_model_060"
       ]
      }
     },
     "pythree_example_model_062": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationMixerModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "rootObject": "IPY_MODEL_pythree_example_model_059"
      }
     },
     "pythree_example_model_063": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationActionModel",
      "state": {
       "_model_module": "jupyter-threejs",
       "_model_module_version": "^2.0.0",
       "_model_name": "AnimationActionModel",
       "_view_module_version": "^2.0.0",
       "clip": "IPY_MODEL_pythree_example_model_061",
       "layout": "IPY_MODEL_pythree_example_model_064",
       "localRoot": "IPY_MODEL_pythree_example_model_059",
       "mixer": "IPY_MODEL_pythree_example_model_062",
       "repititions": "inf"
      }
     },
     "pythree_example_model_064": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_065": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "PerspectiveCameraModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "aspect": 1.5,
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        5,
        3,
        5,
        1
       ],
       "position": [
        5,
        3,
        5
       ],
       "projectionMatrix": [
        1.4296712803397058,
        0,
        0,
        0,
        0,
        2.1445069205095586,
        0,
        0,
        0,
        0,
        -1.00010000500025,
        -1,
        0,
        0,
        -0.200010000500025,
        0
       ]
      }
     },
     "pythree_example_model_066": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "DirectionalLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "intensity": 0.6,
       "matrixWorldNeedsUpdate": true,
       "position": [
        3,
        5,
        1
       ],
       "shadow": "IPY_MODEL_47e521ae-c606-4657-a1f9-d93f1eb43b36",
       "target": "IPY_MODEL_ed20e9cd-3bd3-43ae-bf39-d4ac11e691ba"
      }
     },
     "pythree_example_model_067": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AmbientLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "intensity": 0.5
      }
     },
     "pythree_example_model_068": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SceneModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_059",
        "IPY_MODEL_pythree_example_model_065",
        "IPY_MODEL_pythree_example_model_066",
        "IPY_MODEL_pythree_example_model_067"
       ]
      }
     },
     "pythree_example_model_069": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "OrbitControlsModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "controlling": "IPY_MODEL_pythree_example_model_065",
       "maxAzimuthAngle": "inf",
       "maxDistance": "inf",
       "maxZoom": "inf",
       "minAzimuthAngle": "-inf"
      }
     },
     "pythree_example_model_070": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "RendererModel",
      "state": {
       "_height": 400,
       "_model_module_version": "^2.0.0",
       "_view_module_version": "^2.0.0",
       "_width": 600,
       "camera": "IPY_MODEL_pythree_example_model_065",
       "controls": [
        "IPY_MODEL_pythree_example_model_069"
       ],
       "layout": "IPY_MODEL_pythree_example_model_071",
       "scene": "IPY_MODEL_pythree_example_model_068",
       "shadowMap": "IPY_MODEL_pythree_example_model_072"
      }
     },
     "pythree_example_model_071": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_072": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "WebGLShadowMapModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": ""
      }
     },
     "pythree_example_model_076": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "CylinderBufferGeometryModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "height": 50,
       "heightSegments": 15,
       "openEnded": true,
       "radiusBottom": 5,
       "radialSegments": 5,
       "radiusTop": 5
      }
     },
     "pythree_example_model_077": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BufferGeometryModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "attributes": {
        "normal": "IPY_MODEL_2ed2242a-4677-47b4-b745-54a0a5fe88bf",
        "position": "IPY_MODEL_175da34b-a1b9-43f4-b4bd-dd778dd33c8b",
        "skinIndex": "IPY_MODEL_pythree_example_model_082",
        "skinWeight": "IPY_MODEL_pythree_example_model_083",
        "uv": "IPY_MODEL_0d3ce496-43e1-4721-b040-8e4a50f531b2"
       },
       "index": "IPY_MODEL_df9bc36f-14ba-466c-8d32-7f97afd98169"
      }
     },
     "pythree_example_model_082": {
      "buffers": [
       {
        "data": "AAAAQAAAQEAAAAAAAAAAAAAAAEAAAEBAAAAAAAAAAAAAAABAAABAQAAAAAAAAAAAAAAAQAAAQEAAAAAAAAAAAAAAAEAAAEBAAAAAAAAAAAAAAABAAABAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAACAPwAAAEAAAAAAAAAAAAAAgD8AAABAAAAAAAAAAAAAAIA/AAAAQAAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAgAAAgD8AAAAAAAAAAAAAAIAAAIA/AAAAAAAAAAAAAACAAACAPwAAAAAAAAAAAAAAgAAAgD8AAAAAAAAAAAAAAIAAAIA/AAAAAAAAAAAAAACAAACAPwAAAAAAAAAA",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "array": {
        "dtype": "float32",
        "shape": [
         96,
         4
        ]
       },
       "normalized": true,
       "version": 2
      }
     },
     "pythree_example_model_083": {
      "buffers": [
       {
        "data": "AACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAiogIPt3dXT8AAAAAAAAAAIqICD7d3V0/AAAAAAAAAACKiAg+3d1dPwAAAAAAAAAAiogIPt3dXT8AAAAAAAAAAIqICD7d3V0/AAAAAAAAAACKiAg+3d1dPwAAAAAAAAAAiIiIPry7Oz8AAAAAAAAAAIiIiD68uzs/AAAAAAAAAACIiIg+vLs7PwAAAAAAAAAAiIiIPry7Oz8AAAAAAAAAAIiIiD68uzs/AAAAAAAAAACIiIg+vLs7PwAAAAAAAAAAzczMPpqZGT8AAAAAAAAAAM3MzD6amRk/AAAAAAAAAADNzMw+mpkZPwAAAAAAAAAAzczMPpqZGT8AAAAAAAAAAM3MzD6amRk/AAAAAAAAAADNzMw+mpkZPwAAAAAAAAAAiIgIP+/u7j4AAAAAAAAAAIiICD/v7u4+AAAAAAAAAACIiAg/7+7uPgAAAAAAAAAAiIgIP+/u7j4AAAAAAAAAAIiICD/v7u4+AAAAAAAAAACIiAg/7+7uPgAAAAAAAAAAq6oqP6qqqj4AAAAAAAAAAKuqKj+qqqo+AAAAAAAAAACrqio/qqqqPgAAAAAAAAAAq6oqP6qqqj4AAAAAAAAAAKuqKj+qqqo+AAAAAAAAAACrqio/qqqqPgAAAAAAAAAAzcxMP83MTD4AAAAAAAAAAM3MTD/NzEw+AAAAAAAAAADNzEw/zcxMPgAAAAAAAAAAzcxMP83MTD4AAAAAAAAAAM3MTD/NzEw+AAAAAAAAAADNzEw/zcxMPgAAAAAAAAAA7+5uP4iIiD0AAAAAAAAAAO/ubj+IiIg9AAAAAAAAAADv7m4/iIiIPQAAAAAAAAAA7+5uP4iIiD0AAAAAAAAAAO/ubj+IiIg9AAAAAAAAAADv7m4/iIiIPQAAAAAAAAAAiIiIPe/ubj8AAAAAAAAAAIiIiD3v7m4/AAAAAAAAAACIiIg97+5uPwAAAAAAAAAAiIiIPe/ubj8AAAAAAAAAAIiIiD3v7m4/AAAAAAAAAACIiIg97+5uPwAAAAAAAAAAzcxMPs3MTD8AAAAAAAAAAM3MTD7NzEw/AAAAAAAAAADNzEw+zcxMPwAAAAAAAAAAzcxMPs3MTD8AAAAAAAAAAM3MTD7NzEw/AAAAAAAAAADNzEw+zcxMPwAAAAAAAAAAqqqqPquqKj8AAAAAAAAAAKqqqj6rqio/AAAAAAAAAACqqqo+q6oqPwAAAAAAAAAAqqqqPquqKj8AAAAAAAAAAKqqqj6rqio/AAAAAAAAAACqqqo+q6oqPwAAAAAAAAAA7+7uPoiICD8AAAAAAAAAAO/u7j6IiAg/AAAAAAAAAADv7u4+iIgIPwAAAAAAAAAA7+7uPoiICD8AAAAAAAAAAO/u7j6IiAg/AAAAAAAAAADv7u4+iIgIPwAAAAAAAAAAmpkZP83MzD4AAAAAAAAAAJqZGT/NzMw+AAAAAAAAAACamRk/zczMPgAAAAAAAAAAmpkZP83MzD4AAAAAAAAAAJqZGT/NzMw+AAAAAAAAAACamRk/zczMPgAAAAAAAAAAvLs7P4iIiD4AAAAAAAAAALy7Oz+IiIg+AAAAAAAAAAC8uzs/iIiIPgAAAAAAAAAAvLs7P4iIiD4AAAAAAAAAALy7Oz+IiIg+AAAAAAAAAAC8uzs/iIiIPgAAAAAAAAAA3d1dP4qICD4AAAAAAAAAAN3dXT+KiAg+AAAAAAAAAADd3V0/iogIPgAAAAAAAAAA3d1dP4qICD4AAAAAAAAAAN3dXT+KiAg+AAAAAAAAAADd3V0/iogIPgAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAA",
        "encoding": "base64",
        "path": [
         "array",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BufferAttributeModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "array": {
        "dtype": "float32",
        "shape": [
         96,
         4
        ]
       },
       "normalized": true,
       "version": 2
      }
     },
     "pythree_example_model_084": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BoneModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_085"
       ],
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        -25,
        0,
        1
       ],
       "position": [
        0,
        -25,
        0
       ]
      }
     },
     "pythree_example_model_085": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BoneModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_086"
       ],
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        25,
        0,
        1
       ],
       "position": [
        0,
        25,
        0
       ]
      }
     },
     "pythree_example_model_086": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "BoneModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        25,
        0,
        1
       ],
       "position": [
        0,
        25,
        0
       ]
      }
     },
     "pythree_example_model_087": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SkeletonModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "bones": [
        "IPY_MODEL_pythree_example_model_084",
        "IPY_MODEL_pythree_example_model_085",
        "IPY_MODEL_pythree_example_model_086"
       ]
      }
     },
     "pythree_example_model_088": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "MeshPhongMaterialModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "side": "DoubleSide",
       "skinning": true
      }
     },
     "pythree_example_model_089": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SkinnedMeshModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_084"
       ],
       "geometry": "IPY_MODEL_pythree_example_model_077",
       "material": "IPY_MODEL_pythree_example_model_088",
       "morphTargetInfluences": [],
       "skeleton": "IPY_MODEL_pythree_example_model_087"
      }
     },
     "pythree_example_model_090": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SkeletonHelperModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "root": "IPY_MODEL_pythree_example_model_089",
       "type": "LineSegments"
      }
     },
     "pythree_example_model_091": {
      "buffers": [
       {
        "data": "AAAAAAAAAD8AAMA/AAAAQA==",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAAJqZmT6amZm+AAAAAA==",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".bones[1].rotation[x]",
       "times": {
        "dtype": "float32",
        "shape": [
         4
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         4
        ]
       }
      }
     },
     "pythree_example_model_092": {
      "buffers": [
       {
        "data": "AAAAAAAAAD8AAMA/AAAAQA==",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAAJqZmT6amZm+AAAAAA==",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".bones[1].rotation[z]",
       "times": {
        "dtype": "float32",
        "shape": [
         4
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         4
        ]
       }
      }
     },
     "pythree_example_model_093": {
      "buffers": [
       {
        "data": "AAAAAAAAAD8AAMA/AAAAQA==",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAAJqZmb6amZk+AAAAAA==",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".bones[2].rotation[x]",
       "times": {
        "dtype": "float32",
        "shape": [
         4
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         4
        ]
       }
      }
     },
     "pythree_example_model_094": {
      "buffers": [
       {
        "data": "AAAAAAAAAD8AAMA/AAAAQA==",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAAJqZmb6amZk+AAAAAA==",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".bones[2].rotation[z]",
       "times": {
        "dtype": "float32",
        "shape": [
         4
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         4
        ]
       }
      }
     },
     "pythree_example_model_095": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationClipModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "duration": 2,
       "tracks": [
        "IPY_MODEL_pythree_example_model_091",
        "IPY_MODEL_pythree_example_model_092",
        "IPY_MODEL_pythree_example_model_093",
        "IPY_MODEL_pythree_example_model_094"
       ]
      }
     },
     "pythree_example_model_096": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationMixerModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "rootObject": "IPY_MODEL_pythree_example_model_089"
      }
     },
     "pythree_example_model_097": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationActionModel",
      "state": {
       "_model_module": "jupyter-threejs",
       "_model_module_version": "^2.0.0",
       "_model_name": "AnimationActionModel",
       "_view_module_version": "^2.0.0",
       "clip": "IPY_MODEL_pythree_example_model_095",
       "layout": "IPY_MODEL_pythree_example_model_098",
       "localRoot": "IPY_MODEL_pythree_example_model_089",
       "mixer": "IPY_MODEL_pythree_example_model_096",
       "repititions": "inf"
      }
     },
     "pythree_example_model_098": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_099": {
      "buffers": [
       {
        "data": "AAAAAAAAAD8AAMA/AAAAQA==",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAADMzMz8zMzO/AAAAAA==",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".bones[1].rotation[y]",
       "times": {
        "dtype": "float32",
        "shape": [
         4
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         4
        ]
       }
      }
     },
     "pythree_example_model_100": {
      "buffers": [
       {
        "data": "AAAAAAAAAD8AAMA/AAAAQA==",
        "encoding": "base64",
        "path": [
         "times",
         "buffer"
        ]
       },
       {
        "data": "AAAAADMzMz8zMzO/AAAAAA==",
        "encoding": "base64",
        "path": [
         "values",
         "buffer"
        ]
       }
      ],
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "NumberKeyframeTrackModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "name": ".bones[2].rotation[y]",
       "times": {
        "dtype": "float32",
        "shape": [
         4
        ]
       },
       "values": {
        "dtype": "float32",
        "shape": [
         4
        ]
       }
      }
     },
     "pythree_example_model_101": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationClipModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "duration": 2,
       "tracks": [
        "IPY_MODEL_pythree_example_model_099",
        "IPY_MODEL_pythree_example_model_100"
       ]
      }
     },
     "pythree_example_model_102": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationMixerModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "rootObject": "IPY_MODEL_pythree_example_model_089"
      }
     },
     "pythree_example_model_103": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AnimationActionModel",
      "state": {
       "_model_module": "jupyter-threejs",
       "_model_module_version": "^2.0.0",
       "_model_name": "AnimationActionModel",
       "_view_module_version": "^2.0.0",
       "clip": "IPY_MODEL_pythree_example_model_101",
       "layout": "IPY_MODEL_pythree_example_model_104",
       "localRoot": "IPY_MODEL_pythree_example_model_089",
       "mixer": "IPY_MODEL_pythree_example_model_102",
       "repititions": "inf"
      }
     },
     "pythree_example_model_104": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_105": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "PerspectiveCameraModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "aspect": 1.5,
       "matrix": [
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        0,
        0,
        0,
        1,
        0,
        40,
        24,
        40,
        1
       ],
       "position": [
        40,
        24,
        40
       ],
       "projectionMatrix": [
        1.4296712803397058,
        0,
        0,
        0,
        0,
        2.1445069205095586,
        0,
        0,
        0,
        0,
        -1.00010000500025,
        -1,
        0,
        0,
        -0.200010000500025,
        0
       ]
      }
     },
     "pythree_example_model_106": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "DirectionalLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "intensity": 0.6,
       "matrixWorldNeedsUpdate": true,
       "position": [
        3,
        5,
        1
       ],
       "shadow": "IPY_MODEL_142291ce-ad0c-49be-8258-3c7123d1d633",
       "target": "IPY_MODEL_be516a93-e440-4dc2-93e7-16defd1f7d81"
      }
     },
     "pythree_example_model_107": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "AmbientLightModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "intensity": 0.5
      }
     },
     "pythree_example_model_108": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "SceneModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "children": [
        "IPY_MODEL_pythree_example_model_089",
        "IPY_MODEL_pythree_example_model_090",
        "IPY_MODEL_pythree_example_model_105",
        "IPY_MODEL_pythree_example_model_106",
        "IPY_MODEL_pythree_example_model_107"
       ]
      }
     },
     "pythree_example_model_109": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "OrbitControlsModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": "",
       "controlling": "IPY_MODEL_pythree_example_model_105",
       "maxAzimuthAngle": "inf",
       "maxDistance": "inf",
       "maxZoom": "inf",
       "minAzimuthAngle": "-inf"
      }
     },
     "pythree_example_model_110": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "RendererModel",
      "state": {
       "_height": 400,
       "_model_module_version": "^2.0.0",
       "_view_module_version": "^2.0.0",
       "_width": 600,
       "camera": "IPY_MODEL_pythree_example_model_105",
       "controls": [
        "IPY_MODEL_pythree_example_model_109"
       ],
       "layout": "IPY_MODEL_pythree_example_model_111",
       "scene": "IPY_MODEL_pythree_example_model_108",
       "shadowMap": "IPY_MODEL_pythree_example_model_112"
      }
     },
     "pythree_example_model_111": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.1.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "pythree_example_model_112": {
      "model_module": "jupyter-threejs",
      "model_module_version": "^2.0.0",
      "model_name": "WebGLShadowMapModel",
      "state": {
       "_model_module_version": "^2.0.0",
       "_view_module": null,
       "_view_module_version": ""
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
